@semiont/backend 0.4.20 → 0.4.22
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/index.js +3520 -5508
- package/dist/index.js.map +1 -1
- package/dist/openapi.json +917 -2661
- package/package.json +5 -5
package/dist/openapi.json
CHANGED
|
@@ -12,303 +12,6 @@
|
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
14
|
"paths": {
|
|
15
|
-
"/resources/{id}": {
|
|
16
|
-
"get": {
|
|
17
|
-
"summary": "Get Resource by URI (W3C Content Negotiation)",
|
|
18
|
-
"description": "W3C-compliant globally resolvable resource URI with content negotiation. Returns JSON-LD metadata (Accept: application/ld+json), raw representation (Accept: text/plain, text/markdown, etc.), or redirects to frontend (?view=semiont). Requires authentication.",
|
|
19
|
-
"tags": [
|
|
20
|
-
"W3C URIs"
|
|
21
|
-
],
|
|
22
|
-
"security": [
|
|
23
|
-
{
|
|
24
|
-
"bearerAuth": []
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
"parameters": [
|
|
28
|
-
{
|
|
29
|
-
"name": "id",
|
|
30
|
-
"in": "path",
|
|
31
|
-
"required": true,
|
|
32
|
-
"schema": {
|
|
33
|
-
"type": "string"
|
|
34
|
-
},
|
|
35
|
-
"description": "Resource ID"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"name": "view",
|
|
39
|
-
"in": "query",
|
|
40
|
-
"required": false,
|
|
41
|
-
"schema": {
|
|
42
|
-
"type": "string",
|
|
43
|
-
"enum": [
|
|
44
|
-
"semiont"
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
"description": "Optional view parameter. If set to 'semiont', redirects to frontend viewer."
|
|
48
|
-
}
|
|
49
|
-
],
|
|
50
|
-
"responses": {
|
|
51
|
-
"200": {
|
|
52
|
-
"description": "Resource metadata (JSON-LD) or raw representation",
|
|
53
|
-
"content": {
|
|
54
|
-
"application/ld+json": {
|
|
55
|
-
"schema": {
|
|
56
|
-
"$ref": "#/components/schemas/GetResourceResponse"
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
"text/plain": {
|
|
60
|
-
"schema": {
|
|
61
|
-
"type": "string"
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
"text/markdown": {
|
|
65
|
-
"schema": {
|
|
66
|
-
"type": "string"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
"302": {
|
|
72
|
-
"description": "Redirect to frontend viewer (when ?view=semiont)"
|
|
73
|
-
},
|
|
74
|
-
"404": {
|
|
75
|
-
"description": "Resource not found"
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"patch": {
|
|
80
|
-
"summary": "Update Resource",
|
|
81
|
-
"description": "Update resource metadata (append-only operations - name and content are immutable)",
|
|
82
|
-
"tags": [
|
|
83
|
-
"W3C URIs"
|
|
84
|
-
],
|
|
85
|
-
"security": [
|
|
86
|
-
{
|
|
87
|
-
"bearerAuth": []
|
|
88
|
-
}
|
|
89
|
-
],
|
|
90
|
-
"parameters": [
|
|
91
|
-
{
|
|
92
|
-
"name": "id",
|
|
93
|
-
"in": "path",
|
|
94
|
-
"required": true,
|
|
95
|
-
"schema": {
|
|
96
|
-
"type": "string"
|
|
97
|
-
},
|
|
98
|
-
"description": "Resource ID"
|
|
99
|
-
}
|
|
100
|
-
],
|
|
101
|
-
"requestBody": {
|
|
102
|
-
"content": {
|
|
103
|
-
"application/json": {
|
|
104
|
-
"schema": {
|
|
105
|
-
"$ref": "#/components/schemas/UpdateResourceRequest"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
},
|
|
110
|
-
"responses": {
|
|
111
|
-
"202": {
|
|
112
|
-
"description": "Update accepted"
|
|
113
|
-
},
|
|
114
|
-
"404": {
|
|
115
|
-
"description": "Resource not found"
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
"/annotations/{id}": {
|
|
121
|
-
"get": {
|
|
122
|
-
"summary": "Get Annotation by URI (W3C Content Negotiation)",
|
|
123
|
-
"description": "W3C-compliant globally resolvable annotation URI with content negotiation. Returns JSON-LD for API clients (Accept: application/ld+json or application/json). Redirects to frontend for browsers (Accept: text/html or browser User-Agent). Requires authentication and resourceId query parameter.",
|
|
124
|
-
"tags": [
|
|
125
|
-
"W3C URIs"
|
|
126
|
-
],
|
|
127
|
-
"security": [
|
|
128
|
-
{
|
|
129
|
-
"bearerAuth": []
|
|
130
|
-
}
|
|
131
|
-
],
|
|
132
|
-
"parameters": [
|
|
133
|
-
{
|
|
134
|
-
"name": "id",
|
|
135
|
-
"in": "path",
|
|
136
|
-
"required": true,
|
|
137
|
-
"schema": {
|
|
138
|
-
"type": "string"
|
|
139
|
-
},
|
|
140
|
-
"description": "Annotation ID"
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"name": "resourceId",
|
|
144
|
-
"in": "query",
|
|
145
|
-
"required": true,
|
|
146
|
-
"schema": {
|
|
147
|
-
"type": "string",
|
|
148
|
-
"format": "uri"
|
|
149
|
-
},
|
|
150
|
-
"description": "Resource ID or URI containing the annotation"
|
|
151
|
-
}
|
|
152
|
-
],
|
|
153
|
-
"responses": {
|
|
154
|
-
"200": {
|
|
155
|
-
"description": "Annotation representation (JSON-LD)",
|
|
156
|
-
"content": {
|
|
157
|
-
"application/ld+json": {
|
|
158
|
-
"schema": {
|
|
159
|
-
"$ref": "#/components/schemas/GetAnnotationResponse"
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
"302": {
|
|
165
|
-
"description": "Redirect to frontend (for browsers)"
|
|
166
|
-
},
|
|
167
|
-
"400": {
|
|
168
|
-
"description": "Missing resourceId parameter"
|
|
169
|
-
},
|
|
170
|
-
"404": {
|
|
171
|
-
"description": "Annotation not found"
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
"/api/annotations/{id}/context": {
|
|
177
|
-
"get": {
|
|
178
|
-
"summary": "Get Annotation Context",
|
|
179
|
-
"description": "Get the text context around an annotation with configurable before/after window",
|
|
180
|
-
"tags": [
|
|
181
|
-
"Annotations",
|
|
182
|
-
"Context"
|
|
183
|
-
],
|
|
184
|
-
"security": [
|
|
185
|
-
{
|
|
186
|
-
"bearerAuth": []
|
|
187
|
-
}
|
|
188
|
-
],
|
|
189
|
-
"parameters": [
|
|
190
|
-
{
|
|
191
|
-
"name": "id",
|
|
192
|
-
"in": "path",
|
|
193
|
-
"required": true,
|
|
194
|
-
"schema": {
|
|
195
|
-
"type": "string"
|
|
196
|
-
},
|
|
197
|
-
"description": "Annotation ID"
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
"name": "resourceId",
|
|
201
|
-
"in": "query",
|
|
202
|
-
"required": true,
|
|
203
|
-
"schema": {
|
|
204
|
-
"type": "string"
|
|
205
|
-
},
|
|
206
|
-
"description": "Resource ID containing the annotation"
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
"name": "contextBefore",
|
|
210
|
-
"in": "query",
|
|
211
|
-
"required": false,
|
|
212
|
-
"schema": {
|
|
213
|
-
"type": "integer",
|
|
214
|
-
"minimum": 0,
|
|
215
|
-
"maximum": 5000,
|
|
216
|
-
"default": 100
|
|
217
|
-
},
|
|
218
|
-
"description": "Number of characters before the selection"
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
"name": "contextAfter",
|
|
222
|
-
"in": "query",
|
|
223
|
-
"required": false,
|
|
224
|
-
"schema": {
|
|
225
|
-
"type": "integer",
|
|
226
|
-
"minimum": 0,
|
|
227
|
-
"maximum": 5000,
|
|
228
|
-
"default": 100
|
|
229
|
-
},
|
|
230
|
-
"description": "Number of characters after the selection"
|
|
231
|
-
}
|
|
232
|
-
],
|
|
233
|
-
"responses": {
|
|
234
|
-
"200": {
|
|
235
|
-
"description": "Annotation context",
|
|
236
|
-
"content": {
|
|
237
|
-
"application/json": {
|
|
238
|
-
"schema": {
|
|
239
|
-
"$ref": "#/components/schemas/AnnotationContextResponse"
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
"400": {
|
|
245
|
-
"description": "Invalid query parameters"
|
|
246
|
-
},
|
|
247
|
-
"401": {
|
|
248
|
-
"description": "Authentication required"
|
|
249
|
-
},
|
|
250
|
-
"404": {
|
|
251
|
-
"description": "Annotation not found"
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
},
|
|
256
|
-
"/api/annotations/{id}/summary": {
|
|
257
|
-
"get": {
|
|
258
|
-
"summary": "Get Annotation Summary",
|
|
259
|
-
"description": "Get an AI-generated summary of the annotation in context",
|
|
260
|
-
"tags": [
|
|
261
|
-
"Annotations",
|
|
262
|
-
"AI"
|
|
263
|
-
],
|
|
264
|
-
"security": [
|
|
265
|
-
{
|
|
266
|
-
"bearerAuth": []
|
|
267
|
-
}
|
|
268
|
-
],
|
|
269
|
-
"parameters": [
|
|
270
|
-
{
|
|
271
|
-
"name": "id",
|
|
272
|
-
"in": "path",
|
|
273
|
-
"required": true,
|
|
274
|
-
"schema": {
|
|
275
|
-
"type": "string"
|
|
276
|
-
},
|
|
277
|
-
"description": "Annotation ID"
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
"name": "resourceId",
|
|
281
|
-
"in": "query",
|
|
282
|
-
"required": true,
|
|
283
|
-
"schema": {
|
|
284
|
-
"type": "string"
|
|
285
|
-
},
|
|
286
|
-
"description": "Resource ID containing the annotation"
|
|
287
|
-
}
|
|
288
|
-
],
|
|
289
|
-
"responses": {
|
|
290
|
-
"200": {
|
|
291
|
-
"description": "AI-generated annotation summary",
|
|
292
|
-
"content": {
|
|
293
|
-
"application/json": {
|
|
294
|
-
"schema": {
|
|
295
|
-
"$ref": "#/components/schemas/ContextualSummaryResponse"
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
},
|
|
300
|
-
"400": {
|
|
301
|
-
"description": "Missing resourceId parameter"
|
|
302
|
-
},
|
|
303
|
-
"401": {
|
|
304
|
-
"description": "Authentication required"
|
|
305
|
-
},
|
|
306
|
-
"404": {
|
|
307
|
-
"description": "Annotation not found"
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
15
|
"/api/health": {
|
|
313
16
|
"get": {
|
|
314
17
|
"summary": "Health Check",
|
|
@@ -453,7 +156,7 @@
|
|
|
453
156
|
"content": {
|
|
454
157
|
"application/json": {
|
|
455
158
|
"schema": {
|
|
456
|
-
"$ref": "#/components/schemas/
|
|
159
|
+
"$ref": "#/components/schemas/TokenRefreshResponse"
|
|
457
160
|
}
|
|
458
161
|
}
|
|
459
162
|
}
|
|
@@ -553,21 +256,91 @@
|
|
|
553
256
|
}
|
|
554
257
|
}
|
|
555
258
|
},
|
|
556
|
-
"/api/
|
|
557
|
-
"
|
|
558
|
-
"summary": "
|
|
559
|
-
"description": "
|
|
259
|
+
"/api/tokens/worker": {
|
|
260
|
+
"post": {
|
|
261
|
+
"summary": "Worker Token Exchange",
|
|
262
|
+
"description": "Exchange a shared secret for a bearer JWT. Used by workers and actors connecting to the EventBus.",
|
|
560
263
|
"tags": [
|
|
561
|
-
"
|
|
264
|
+
"Authentication"
|
|
562
265
|
],
|
|
563
|
-
"security": [
|
|
564
|
-
|
|
565
|
-
|
|
266
|
+
"security": [],
|
|
267
|
+
"requestBody": {
|
|
268
|
+
"required": true,
|
|
269
|
+
"content": {
|
|
270
|
+
"application/json": {
|
|
271
|
+
"schema": {
|
|
272
|
+
"type": "object",
|
|
273
|
+
"properties": {
|
|
274
|
+
"secret": {
|
|
275
|
+
"type": "string",
|
|
276
|
+
"description": "The shared worker secret (SEMIONT_WORKER_SECRET)"
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"required": [
|
|
280
|
+
"secret"
|
|
281
|
+
]
|
|
282
|
+
}
|
|
283
|
+
}
|
|
566
284
|
}
|
|
567
|
-
|
|
285
|
+
},
|
|
568
286
|
"responses": {
|
|
569
287
|
"200": {
|
|
570
|
-
"description": "
|
|
288
|
+
"description": "Token issued",
|
|
289
|
+
"content": {
|
|
290
|
+
"application/json": {
|
|
291
|
+
"schema": {
|
|
292
|
+
"type": "object",
|
|
293
|
+
"properties": {
|
|
294
|
+
"token": {
|
|
295
|
+
"type": "string",
|
|
296
|
+
"description": "Bearer JWT for subsequent authenticated requests"
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
"required": [
|
|
300
|
+
"token"
|
|
301
|
+
]
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
"401": {
|
|
307
|
+
"description": "Invalid worker secret",
|
|
308
|
+
"content": {
|
|
309
|
+
"application/json": {
|
|
310
|
+
"schema": {
|
|
311
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
},
|
|
316
|
+
"503": {
|
|
317
|
+
"description": "Worker authentication not configured",
|
|
318
|
+
"content": {
|
|
319
|
+
"application/json": {
|
|
320
|
+
"schema": {
|
|
321
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
"/api/users/me": {
|
|
330
|
+
"get": {
|
|
331
|
+
"summary": "Get Current User",
|
|
332
|
+
"description": "Get information about the authenticated user",
|
|
333
|
+
"tags": [
|
|
334
|
+
"Users"
|
|
335
|
+
],
|
|
336
|
+
"security": [
|
|
337
|
+
{
|
|
338
|
+
"bearerAuth": []
|
|
339
|
+
}
|
|
340
|
+
],
|
|
341
|
+
"responses": {
|
|
342
|
+
"200": {
|
|
343
|
+
"description": "User information",
|
|
571
344
|
"content": {
|
|
572
345
|
"application/json": {
|
|
573
346
|
"schema": {
|
|
@@ -1109,12 +882,12 @@
|
|
|
1109
882
|
}
|
|
1110
883
|
}
|
|
1111
884
|
},
|
|
1112
|
-
"/api/
|
|
885
|
+
"/api/moderate/exchange/export": {
|
|
1113
886
|
"post": {
|
|
1114
887
|
"summary": "Export Knowledge Base as JSON-LD",
|
|
1115
888
|
"description": "Export the knowledge base as a JSON-LD Linked Data tar.gz archive",
|
|
1116
889
|
"tags": [
|
|
1117
|
-
"
|
|
890
|
+
"Moderation"
|
|
1118
891
|
],
|
|
1119
892
|
"security": [
|
|
1120
893
|
{
|
|
@@ -1156,7 +929,7 @@
|
|
|
1156
929
|
}
|
|
1157
930
|
},
|
|
1158
931
|
"403": {
|
|
1159
|
-
"description": "Forbidden -
|
|
932
|
+
"description": "Forbidden - moderator or admin role required",
|
|
1160
933
|
"content": {
|
|
1161
934
|
"application/json": {
|
|
1162
935
|
"schema": {
|
|
@@ -1168,12 +941,12 @@
|
|
|
1168
941
|
}
|
|
1169
942
|
}
|
|
1170
943
|
},
|
|
1171
|
-
"/api/
|
|
944
|
+
"/api/moderate/exchange/import": {
|
|
1172
945
|
"post": {
|
|
1173
946
|
"summary": "Import Knowledge Base from JSON-LD",
|
|
1174
947
|
"description": "Import resources from a JSON-LD Linked Data archive. Returns SSE progress events.",
|
|
1175
948
|
"tags": [
|
|
1176
|
-
"
|
|
949
|
+
"Moderation"
|
|
1177
950
|
],
|
|
1178
951
|
"security": [
|
|
1179
952
|
{
|
|
@@ -1232,7 +1005,7 @@
|
|
|
1232
1005
|
}
|
|
1233
1006
|
},
|
|
1234
1007
|
"403": {
|
|
1235
|
-
"description": "Forbidden -
|
|
1008
|
+
"description": "Forbidden - moderator or admin role required",
|
|
1236
1009
|
"content": {
|
|
1237
1010
|
"application/json": {
|
|
1238
1011
|
"schema": {
|
|
@@ -1244,299 +1017,138 @@
|
|
|
1244
1017
|
}
|
|
1245
1018
|
}
|
|
1246
1019
|
},
|
|
1247
|
-
"/
|
|
1248
|
-
"
|
|
1249
|
-
"summary": "
|
|
1250
|
-
"description": "
|
|
1020
|
+
"/api/cookies/consent": {
|
|
1021
|
+
"get": {
|
|
1022
|
+
"summary": "Get cookie consent preferences",
|
|
1023
|
+
"description": "Returns the current user's cookie consent preferences.",
|
|
1251
1024
|
"tags": [
|
|
1252
|
-
"
|
|
1025
|
+
"Cookies"
|
|
1253
1026
|
],
|
|
1254
1027
|
"security": [
|
|
1255
1028
|
{
|
|
1256
1029
|
"bearerAuth": []
|
|
1257
1030
|
}
|
|
1258
1031
|
],
|
|
1259
|
-
"requestBody": {
|
|
1260
|
-
"required": true,
|
|
1261
|
-
"content": {
|
|
1262
|
-
"multipart/form-data": {
|
|
1263
|
-
"schema": {
|
|
1264
|
-
"type": "object",
|
|
1265
|
-
"required": [
|
|
1266
|
-
"name",
|
|
1267
|
-
"file",
|
|
1268
|
-
"format"
|
|
1269
|
-
],
|
|
1270
|
-
"properties": {
|
|
1271
|
-
"name": {
|
|
1272
|
-
"type": "string",
|
|
1273
|
-
"description": "Resource name"
|
|
1274
|
-
},
|
|
1275
|
-
"file": {
|
|
1276
|
-
"type": "string",
|
|
1277
|
-
"format": "binary",
|
|
1278
|
-
"description": "Binary content of the resource"
|
|
1279
|
-
},
|
|
1280
|
-
"format": {
|
|
1281
|
-
"type": "string",
|
|
1282
|
-
"description": "MIME type (e.g., text/markdown, image/png)"
|
|
1283
|
-
},
|
|
1284
|
-
"entityTypes": {
|
|
1285
|
-
"type": "string",
|
|
1286
|
-
"description": "JSON-encoded array of entity types"
|
|
1287
|
-
},
|
|
1288
|
-
"language": {
|
|
1289
|
-
"type": "string",
|
|
1290
|
-
"description": "ISO 639-1 language code"
|
|
1291
|
-
},
|
|
1292
|
-
"creationMethod": {
|
|
1293
|
-
"type": "string",
|
|
1294
|
-
"description": "How the resource was created"
|
|
1295
|
-
},
|
|
1296
|
-
"sourceAnnotationId": {
|
|
1297
|
-
"type": "string",
|
|
1298
|
-
"description": "Source annotation ID (for generated resources)"
|
|
1299
|
-
},
|
|
1300
|
-
"sourceResourceId": {
|
|
1301
|
-
"type": "string",
|
|
1302
|
-
"description": "Source resource ID (for cloned resources)"
|
|
1303
|
-
}
|
|
1304
|
-
}
|
|
1305
|
-
}
|
|
1306
|
-
}
|
|
1307
|
-
}
|
|
1308
|
-
},
|
|
1309
1032
|
"responses": {
|
|
1310
|
-
"
|
|
1311
|
-
"description": "
|
|
1033
|
+
"200": {
|
|
1034
|
+
"description": "Current consent preferences",
|
|
1312
1035
|
"content": {
|
|
1313
1036
|
"application/json": {
|
|
1314
1037
|
"schema": {
|
|
1315
|
-
"
|
|
1316
|
-
"properties": {
|
|
1317
|
-
"resourceId": {
|
|
1318
|
-
"type": "string"
|
|
1319
|
-
}
|
|
1320
|
-
},
|
|
1321
|
-
"required": [
|
|
1322
|
-
"resourceId"
|
|
1323
|
-
]
|
|
1038
|
+
"$ref": "#/components/schemas/CookieConsentResponse"
|
|
1324
1039
|
}
|
|
1325
1040
|
}
|
|
1326
1041
|
}
|
|
1327
|
-
}
|
|
1328
|
-
}
|
|
1329
|
-
},
|
|
1330
|
-
"get": {
|
|
1331
|
-
"summary": "List Resources",
|
|
1332
|
-
"description": "List all resources with optional filters",
|
|
1333
|
-
"tags": [
|
|
1334
|
-
"Resources"
|
|
1335
|
-
],
|
|
1336
|
-
"security": [
|
|
1337
|
-
{
|
|
1338
|
-
"bearerAuth": []
|
|
1339
|
-
}
|
|
1340
|
-
],
|
|
1341
|
-
"parameters": [
|
|
1342
|
-
{
|
|
1343
|
-
"schema": {
|
|
1344
|
-
"type": "number",
|
|
1345
|
-
"nullable": true,
|
|
1346
|
-
"default": 0
|
|
1347
|
-
},
|
|
1348
|
-
"required": false,
|
|
1349
|
-
"name": "offset",
|
|
1350
|
-
"in": "query"
|
|
1351
|
-
},
|
|
1352
|
-
{
|
|
1353
|
-
"schema": {
|
|
1354
|
-
"type": "number",
|
|
1355
|
-
"nullable": true,
|
|
1356
|
-
"default": 50
|
|
1357
|
-
},
|
|
1358
|
-
"required": false,
|
|
1359
|
-
"name": "limit",
|
|
1360
|
-
"in": "query"
|
|
1361
|
-
},
|
|
1362
|
-
{
|
|
1363
|
-
"schema": {
|
|
1364
|
-
"type": "string"
|
|
1365
|
-
},
|
|
1366
|
-
"required": false,
|
|
1367
|
-
"name": "entityType",
|
|
1368
|
-
"in": "query"
|
|
1369
|
-
},
|
|
1370
|
-
{
|
|
1371
|
-
"schema": {
|
|
1372
|
-
"anyOf": [
|
|
1373
|
-
{
|
|
1374
|
-
"type": "string",
|
|
1375
|
-
"enum": [
|
|
1376
|
-
"true"
|
|
1377
|
-
]
|
|
1378
|
-
},
|
|
1379
|
-
{
|
|
1380
|
-
"type": "string",
|
|
1381
|
-
"enum": [
|
|
1382
|
-
"false"
|
|
1383
|
-
]
|
|
1384
|
-
},
|
|
1385
|
-
{
|
|
1386
|
-
"type": "boolean"
|
|
1387
|
-
}
|
|
1388
|
-
]
|
|
1389
|
-
},
|
|
1390
|
-
"required": false,
|
|
1391
|
-
"name": "archived",
|
|
1392
|
-
"in": "query"
|
|
1393
|
-
},
|
|
1394
|
-
{
|
|
1395
|
-
"schema": {
|
|
1396
|
-
"type": "string"
|
|
1397
|
-
},
|
|
1398
|
-
"required": false,
|
|
1399
|
-
"name": "search",
|
|
1400
|
-
"in": "query"
|
|
1401
1042
|
},
|
|
1402
|
-
{
|
|
1403
|
-
"
|
|
1404
|
-
"type": "string"
|
|
1405
|
-
},
|
|
1406
|
-
"required": false,
|
|
1407
|
-
"name": "q",
|
|
1408
|
-
"in": "query",
|
|
1409
|
-
"description": "Search query"
|
|
1410
|
-
}
|
|
1411
|
-
],
|
|
1412
|
-
"responses": {
|
|
1413
|
-
"200": {
|
|
1414
|
-
"description": "Resources listed successfully",
|
|
1043
|
+
"401": {
|
|
1044
|
+
"description": "Authentication required",
|
|
1415
1045
|
"content": {
|
|
1416
1046
|
"application/json": {
|
|
1417
1047
|
"schema": {
|
|
1418
|
-
"$ref": "#/components/schemas/
|
|
1048
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1419
1049
|
}
|
|
1420
1050
|
}
|
|
1421
1051
|
}
|
|
1422
1052
|
}
|
|
1423
1053
|
}
|
|
1424
|
-
}
|
|
1425
|
-
},
|
|
1426
|
-
"/resources/{id}/annotate-references": {
|
|
1054
|
+
},
|
|
1427
1055
|
"post": {
|
|
1428
|
-
"summary": "
|
|
1429
|
-
"description": "
|
|
1056
|
+
"summary": "Update cookie consent preferences",
|
|
1057
|
+
"description": "Update the current user's cookie consent preferences. The `necessary` flag must be true — necessary cookies cannot be disabled.",
|
|
1430
1058
|
"tags": [
|
|
1431
|
-
"
|
|
1432
|
-
"Annotations",
|
|
1433
|
-
"Real-time"
|
|
1059
|
+
"Cookies"
|
|
1434
1060
|
],
|
|
1435
1061
|
"security": [
|
|
1436
1062
|
{
|
|
1437
1063
|
"bearerAuth": []
|
|
1438
1064
|
}
|
|
1439
1065
|
],
|
|
1440
|
-
"parameters": [
|
|
1441
|
-
{
|
|
1442
|
-
"schema": {
|
|
1443
|
-
"type": "string"
|
|
1444
|
-
},
|
|
1445
|
-
"required": true,
|
|
1446
|
-
"name": "id",
|
|
1447
|
-
"in": "path"
|
|
1448
|
-
}
|
|
1449
|
-
],
|
|
1450
1066
|
"requestBody": {
|
|
1067
|
+
"required": true,
|
|
1451
1068
|
"content": {
|
|
1452
1069
|
"application/json": {
|
|
1453
1070
|
"schema": {
|
|
1454
|
-
"$ref": "#/components/schemas/
|
|
1071
|
+
"$ref": "#/components/schemas/CookieConsentRequest"
|
|
1455
1072
|
}
|
|
1456
1073
|
}
|
|
1457
1074
|
}
|
|
1458
1075
|
},
|
|
1459
1076
|
"responses": {
|
|
1460
1077
|
"200": {
|
|
1461
|
-
"description": "
|
|
1078
|
+
"description": "Consent updated",
|
|
1462
1079
|
"content": {
|
|
1463
|
-
"
|
|
1080
|
+
"application/json": {
|
|
1464
1081
|
"schema": {
|
|
1465
|
-
"$ref": "#/components/schemas/
|
|
1082
|
+
"$ref": "#/components/schemas/CookieConsentResponse"
|
|
1466
1083
|
}
|
|
1467
1084
|
}
|
|
1468
1085
|
}
|
|
1469
1086
|
},
|
|
1470
|
-
"
|
|
1471
|
-
"description": "
|
|
1087
|
+
"400": {
|
|
1088
|
+
"description": "Invalid consent data (non-boolean fields, missing fields, or necessary=false)",
|
|
1089
|
+
"content": {
|
|
1090
|
+
"application/json": {
|
|
1091
|
+
"schema": {
|
|
1092
|
+
"$ref": "#/components/schemas/CookieConsentResponse"
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1472
1096
|
},
|
|
1473
|
-
"
|
|
1474
|
-
"description": "
|
|
1097
|
+
"401": {
|
|
1098
|
+
"description": "Authentication required",
|
|
1099
|
+
"content": {
|
|
1100
|
+
"application/json": {
|
|
1101
|
+
"schema": {
|
|
1102
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1475
1106
|
}
|
|
1476
1107
|
}
|
|
1477
1108
|
}
|
|
1478
1109
|
},
|
|
1479
|
-
"/
|
|
1480
|
-
"
|
|
1481
|
-
"summary": "
|
|
1482
|
-
"description": "
|
|
1110
|
+
"/api/cookies/export": {
|
|
1111
|
+
"get": {
|
|
1112
|
+
"summary": "Export cookie data (GDPR)",
|
|
1113
|
+
"description": "Export the current user's cookie-related data as a downloadable JSON file. Response sets `Content-Disposition: attachment; filename=\"cookie-data-export-<timestamp>.json\"`.",
|
|
1483
1114
|
"tags": [
|
|
1484
|
-
"
|
|
1485
|
-
"Annotations",
|
|
1486
|
-
"Real-time"
|
|
1115
|
+
"Cookies"
|
|
1487
1116
|
],
|
|
1488
1117
|
"security": [
|
|
1489
1118
|
{
|
|
1490
1119
|
"bearerAuth": []
|
|
1491
1120
|
}
|
|
1492
1121
|
],
|
|
1493
|
-
"parameters": [
|
|
1494
|
-
{
|
|
1495
|
-
"schema": {
|
|
1496
|
-
"type": "string"
|
|
1497
|
-
},
|
|
1498
|
-
"required": true,
|
|
1499
|
-
"name": "id",
|
|
1500
|
-
"in": "path"
|
|
1501
|
-
}
|
|
1502
|
-
],
|
|
1503
|
-
"requestBody": {
|
|
1504
|
-
"content": {
|
|
1505
|
-
"application/json": {
|
|
1506
|
-
"schema": {
|
|
1507
|
-
"$ref": "#/components/schemas/AnnotateHighlightsStreamRequest"
|
|
1508
|
-
}
|
|
1509
|
-
}
|
|
1510
|
-
}
|
|
1511
|
-
},
|
|
1512
1122
|
"responses": {
|
|
1513
1123
|
"200": {
|
|
1514
|
-
"description": "
|
|
1124
|
+
"description": "User cookie data as attachment",
|
|
1515
1125
|
"content": {
|
|
1516
|
-
"
|
|
1126
|
+
"application/json": {
|
|
1517
1127
|
"schema": {
|
|
1518
|
-
"$ref": "#/components/schemas/
|
|
1128
|
+
"$ref": "#/components/schemas/CookieExportResponse"
|
|
1519
1129
|
}
|
|
1520
1130
|
}
|
|
1521
1131
|
}
|
|
1522
1132
|
},
|
|
1523
1133
|
"401": {
|
|
1524
|
-
"description": "Authentication required"
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1134
|
+
"description": "Authentication required",
|
|
1135
|
+
"content": {
|
|
1136
|
+
"application/json": {
|
|
1137
|
+
"schema": {
|
|
1138
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1528
1142
|
}
|
|
1529
1143
|
}
|
|
1530
1144
|
}
|
|
1531
1145
|
},
|
|
1532
|
-
"/
|
|
1533
|
-
"
|
|
1534
|
-
"summary": "
|
|
1535
|
-
"description": "
|
|
1146
|
+
"/api/tokens/mcp-setup": {
|
|
1147
|
+
"get": {
|
|
1148
|
+
"summary": "MCP Setup (browser-driven CLI handoff)",
|
|
1149
|
+
"description": "Browser flow that generates a long-lived (30 day) MCP refresh token for the authenticated user and redirects to a localhost callback URL with the token as a query parameter. Used by CLI tooling (similar to Google's OAuth CLI flow).\n\nThe callback URL must match one of the localhost patterns (`http://localhost:<port>/...`, `http://127.0.0.1:<port>/...`, or `http://[::1]:<port>/...`).",
|
|
1536
1150
|
"tags": [
|
|
1537
|
-
"
|
|
1538
|
-
"Annotations",
|
|
1539
|
-
"Real-time"
|
|
1151
|
+
"Authentication"
|
|
1540
1152
|
],
|
|
1541
1153
|
"security": [
|
|
1542
1154
|
{
|
|
@@ -1545,51 +1157,58 @@
|
|
|
1545
1157
|
],
|
|
1546
1158
|
"parameters": [
|
|
1547
1159
|
{
|
|
1160
|
+
"name": "callback",
|
|
1161
|
+
"in": "query",
|
|
1162
|
+
"required": true,
|
|
1163
|
+
"description": "Localhost URL to redirect to with `?token=<refresh-token>` on success.",
|
|
1548
1164
|
"schema": {
|
|
1549
1165
|
"type": "string"
|
|
1550
|
-
}
|
|
1551
|
-
"required": true,
|
|
1552
|
-
"name": "id",
|
|
1553
|
-
"in": "path"
|
|
1166
|
+
}
|
|
1554
1167
|
}
|
|
1555
1168
|
],
|
|
1556
|
-
"requestBody": {
|
|
1557
|
-
"content": {
|
|
1558
|
-
"application/json": {
|
|
1559
|
-
"schema": {
|
|
1560
|
-
"$ref": "#/components/schemas/AnnotateAssessmentsStreamRequest"
|
|
1561
|
-
}
|
|
1562
|
-
}
|
|
1563
|
-
}
|
|
1564
|
-
},
|
|
1565
1169
|
"responses": {
|
|
1566
|
-
"
|
|
1567
|
-
"description": "
|
|
1170
|
+
"302": {
|
|
1171
|
+
"description": "Redirect to the callback URL with the newly-issued refresh token appended as a `?token=` query parameter."
|
|
1172
|
+
},
|
|
1173
|
+
"400": {
|
|
1174
|
+
"description": "Missing or non-localhost callback URL",
|
|
1568
1175
|
"content": {
|
|
1569
|
-
"
|
|
1176
|
+
"application/json": {
|
|
1570
1177
|
"schema": {
|
|
1571
|
-
"$ref": "#/components/schemas/
|
|
1178
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1572
1179
|
}
|
|
1573
1180
|
}
|
|
1574
1181
|
}
|
|
1575
1182
|
},
|
|
1576
1183
|
"401": {
|
|
1577
|
-
"description": "Authentication required"
|
|
1184
|
+
"description": "Authentication required",
|
|
1185
|
+
"content": {
|
|
1186
|
+
"application/json": {
|
|
1187
|
+
"schema": {
|
|
1188
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1578
1192
|
},
|
|
1579
|
-
"
|
|
1580
|
-
"description": "
|
|
1193
|
+
"500": {
|
|
1194
|
+
"description": "Failed to generate refresh token",
|
|
1195
|
+
"content": {
|
|
1196
|
+
"application/json": {
|
|
1197
|
+
"schema": {
|
|
1198
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
}
|
|
1581
1202
|
}
|
|
1582
1203
|
}
|
|
1583
1204
|
}
|
|
1584
1205
|
},
|
|
1585
|
-
"/
|
|
1586
|
-
"
|
|
1587
|
-
"summary": "
|
|
1588
|
-
"description": "
|
|
1206
|
+
"/bus/subscribe": {
|
|
1207
|
+
"get": {
|
|
1208
|
+
"summary": "Subscribe to the Semiont event bus (SSE)",
|
|
1209
|
+
"description": "Opens a long-lived Server-Sent Events stream over which the bus delivers events matching the requested channels and scopes.\n\nEach SSE frame has `event: bus-event`, a JSON-encoded `data` of the form `{ channel, payload, scope? }`, and an `id` (either a persisted event id, `scope:seq`, for domain events; or an ephemeral id for job-lifecycle / result channels).\n\nPass the last-received id as `Last-Event-ID` to resume — the server replays missed persisted events and emits a `bus:resume-gap` synthetic event when the gap exceeds the replay window.",
|
|
1589
1210
|
"tags": [
|
|
1590
|
-
"
|
|
1591
|
-
"Annotations",
|
|
1592
|
-
"Real-time"
|
|
1211
|
+
"Bus"
|
|
1593
1212
|
],
|
|
1594
1213
|
"security": [
|
|
1595
1214
|
{
|
|
@@ -1598,79 +1217,51 @@
|
|
|
1598
1217
|
],
|
|
1599
1218
|
"parameters": [
|
|
1600
1219
|
{
|
|
1220
|
+
"name": "channel",
|
|
1221
|
+
"in": "query",
|
|
1222
|
+
"required": false,
|
|
1223
|
+
"description": "Unscoped channels to subscribe to. Repeat the parameter for multiple channels. At least one of `channel` or `scoped` is required.",
|
|
1601
1224
|
"schema": {
|
|
1602
|
-
"type": "
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
"name": "id",
|
|
1606
|
-
"in": "path"
|
|
1607
|
-
}
|
|
1608
|
-
],
|
|
1609
|
-
"requestBody": {
|
|
1610
|
-
"content": {
|
|
1611
|
-
"application/json": {
|
|
1612
|
-
"schema": {
|
|
1613
|
-
"$ref": "#/components/schemas/AnnotateCommentsStreamRequest"
|
|
1225
|
+
"type": "array",
|
|
1226
|
+
"items": {
|
|
1227
|
+
"type": "string"
|
|
1614
1228
|
}
|
|
1615
1229
|
}
|
|
1616
|
-
}
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
"
|
|
1621
|
-
"
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
"name": "scoped",
|
|
1233
|
+
"in": "query",
|
|
1234
|
+
"required": false,
|
|
1235
|
+
"description": "Resource-scoped channels to subscribe to (requires `scope`). Repeat for multiple.",
|
|
1236
|
+
"schema": {
|
|
1237
|
+
"type": "array",
|
|
1238
|
+
"items": {
|
|
1239
|
+
"type": "string"
|
|
1626
1240
|
}
|
|
1627
1241
|
}
|
|
1628
1242
|
},
|
|
1629
|
-
"401": {
|
|
1630
|
-
"description": "Authentication required"
|
|
1631
|
-
},
|
|
1632
|
-
"404": {
|
|
1633
|
-
"description": "Resource not found"
|
|
1634
|
-
}
|
|
1635
|
-
}
|
|
1636
|
-
}
|
|
1637
|
-
},
|
|
1638
|
-
"/resources/{id}/annotate-tags": {
|
|
1639
|
-
"post": {
|
|
1640
|
-
"summary": "Annotate Tags with Progress (SSE)",
|
|
1641
|
-
"description": "Stream real-time tag annotation progress via Server-Sent Events. Identifies passages serving specific structural roles (IRAC, IMRAD, Toulmin frameworks).",
|
|
1642
|
-
"tags": [
|
|
1643
|
-
"Resources",
|
|
1644
|
-
"Annotations",
|
|
1645
|
-
"Real-time"
|
|
1646
|
-
],
|
|
1647
|
-
"security": [
|
|
1648
1243
|
{
|
|
1649
|
-
"
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1244
|
+
"name": "scope",
|
|
1245
|
+
"in": "query",
|
|
1246
|
+
"required": false,
|
|
1247
|
+
"description": "Resource scope for scoped channels (typically a resourceId).",
|
|
1248
|
+
"schema": {
|
|
1249
|
+
"type": "string"
|
|
1250
|
+
}
|
|
1251
|
+
},
|
|
1653
1252
|
{
|
|
1253
|
+
"name": "Last-Event-ID",
|
|
1254
|
+
"in": "header",
|
|
1255
|
+
"required": false,
|
|
1256
|
+
"description": "Id of the last event the client received. On reconnect, the server replays persisted events after this id and emits `bus:resume-gap` if the gap exceeds the replay cap.",
|
|
1654
1257
|
"schema": {
|
|
1655
1258
|
"type": "string"
|
|
1656
|
-
},
|
|
1657
|
-
"required": true,
|
|
1658
|
-
"name": "id",
|
|
1659
|
-
"in": "path"
|
|
1660
|
-
}
|
|
1661
|
-
],
|
|
1662
|
-
"requestBody": {
|
|
1663
|
-
"content": {
|
|
1664
|
-
"application/json": {
|
|
1665
|
-
"schema": {
|
|
1666
|
-
"$ref": "#/components/schemas/AnnotateTagsStreamRequest"
|
|
1667
|
-
}
|
|
1668
1259
|
}
|
|
1669
1260
|
}
|
|
1670
|
-
|
|
1261
|
+
],
|
|
1671
1262
|
"responses": {
|
|
1672
1263
|
"200": {
|
|
1673
|
-
"description": "SSE stream opened
|
|
1264
|
+
"description": "SSE stream opened",
|
|
1674
1265
|
"content": {
|
|
1675
1266
|
"text/event-stream": {
|
|
1676
1267
|
"schema": {
|
|
@@ -1679,139 +1270,196 @@
|
|
|
1679
1270
|
}
|
|
1680
1271
|
}
|
|
1681
1272
|
},
|
|
1682
|
-
"
|
|
1683
|
-
"description": "
|
|
1273
|
+
"400": {
|
|
1274
|
+
"description": "No channels requested (at least one `channel` or `scoped` parameter required)",
|
|
1275
|
+
"content": {
|
|
1276
|
+
"application/json": {
|
|
1277
|
+
"schema": {
|
|
1278
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1279
|
+
}
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1684
1282
|
},
|
|
1685
|
-
"
|
|
1686
|
-
"description": "
|
|
1283
|
+
"401": {
|
|
1284
|
+
"description": "Authentication required",
|
|
1285
|
+
"content": {
|
|
1286
|
+
"application/json": {
|
|
1287
|
+
"schema": {
|
|
1288
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1687
1292
|
}
|
|
1688
1293
|
}
|
|
1689
1294
|
}
|
|
1690
1295
|
},
|
|
1691
|
-
"/
|
|
1296
|
+
"/bus/emit": {
|
|
1692
1297
|
"post": {
|
|
1693
|
-
"summary": "
|
|
1694
|
-
"description": "
|
|
1298
|
+
"summary": "Emit an event on the Semiont bus",
|
|
1299
|
+
"description": "Publishes an event to the bus. The channel name must be registered in `bus-protocol.ts` (`EventMap`); the payload is validated against the channel's schema in `CHANNEL_SCHEMAS` when one is registered.\n\nWhen `scope` is set, the event publishes on `eventBus.scope(scope)` rather than the global bus, routing it to per-resource SSE subscribers only. The authenticated user's DID is attached to the payload as `_userId` automatically.\n\nReturns 202 Accepted — the event is delivered to in-memory subscribers synchronously, but downstream persistence (Stower) and materialization happen asynchronously.",
|
|
1695
1300
|
"tags": [
|
|
1696
|
-
"
|
|
1697
|
-
"Real-time",
|
|
1698
|
-
"AI"
|
|
1301
|
+
"Bus"
|
|
1699
1302
|
],
|
|
1700
1303
|
"security": [
|
|
1701
1304
|
{
|
|
1702
1305
|
"bearerAuth": []
|
|
1703
1306
|
}
|
|
1704
1307
|
],
|
|
1705
|
-
"parameters": [
|
|
1706
|
-
{
|
|
1707
|
-
"schema": {
|
|
1708
|
-
"type": "string"
|
|
1709
|
-
},
|
|
1710
|
-
"required": true,
|
|
1711
|
-
"name": "id",
|
|
1712
|
-
"in": "path"
|
|
1713
|
-
}
|
|
1714
|
-
],
|
|
1715
1308
|
"requestBody": {
|
|
1309
|
+
"required": true,
|
|
1716
1310
|
"content": {
|
|
1717
1311
|
"application/json": {
|
|
1718
1312
|
"schema": {
|
|
1719
|
-
"$ref": "#/components/schemas/
|
|
1313
|
+
"$ref": "#/components/schemas/BusEmitRequest"
|
|
1720
1314
|
}
|
|
1721
1315
|
}
|
|
1722
1316
|
}
|
|
1723
1317
|
},
|
|
1724
1318
|
"responses": {
|
|
1725
|
-
"
|
|
1726
|
-
"description": "
|
|
1319
|
+
"202": {
|
|
1320
|
+
"description": "Event accepted and published to subscribers"
|
|
1321
|
+
},
|
|
1322
|
+
"400": {
|
|
1323
|
+
"description": "Missing/invalid channel, payload, or scope; or payload failed schema validation for the channel",
|
|
1727
1324
|
"content": {
|
|
1728
|
-
"
|
|
1325
|
+
"application/json": {
|
|
1729
1326
|
"schema": {
|
|
1730
|
-
"$ref": "#/components/schemas/
|
|
1327
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1731
1328
|
}
|
|
1732
1329
|
}
|
|
1733
1330
|
}
|
|
1734
1331
|
},
|
|
1735
1332
|
"401": {
|
|
1736
|
-
"description": "Authentication required"
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1333
|
+
"description": "Authentication required",
|
|
1334
|
+
"content": {
|
|
1335
|
+
"application/json": {
|
|
1336
|
+
"schema": {
|
|
1337
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1740
1341
|
}
|
|
1741
1342
|
}
|
|
1742
1343
|
}
|
|
1743
1344
|
},
|
|
1744
|
-
"/resources
|
|
1345
|
+
"/resources": {
|
|
1745
1346
|
"post": {
|
|
1746
|
-
"summary": "
|
|
1747
|
-
"description": "
|
|
1347
|
+
"summary": "Create a resource",
|
|
1348
|
+
"description": "Upload binary content + metadata as multipart/form-data. The backend writes content to disk, then emits yield:create on the bus; Stower persists it and returns a 202 with the new resourceId. Full reconciliation happens via SSE domain events (yield:created).\n\nGeneration workers and the /know/compose page both hit this route — bytes always travel on the HTTP wire, never on the bus.",
|
|
1748
1349
|
"tags": [
|
|
1749
|
-
"Resources"
|
|
1750
|
-
"Annotations",
|
|
1751
|
-
"AI"
|
|
1350
|
+
"Resources"
|
|
1752
1351
|
],
|
|
1753
1352
|
"security": [
|
|
1754
1353
|
{
|
|
1755
1354
|
"bearerAuth": []
|
|
1756
1355
|
}
|
|
1757
1356
|
],
|
|
1758
|
-
"parameters": [
|
|
1759
|
-
{
|
|
1760
|
-
"schema": {
|
|
1761
|
-
"type": "string"
|
|
1762
|
-
},
|
|
1763
|
-
"required": true,
|
|
1764
|
-
"name": "id",
|
|
1765
|
-
"in": "path",
|
|
1766
|
-
"description": "Resource ID"
|
|
1767
|
-
}
|
|
1768
|
-
],
|
|
1769
1357
|
"requestBody": {
|
|
1770
1358
|
"required": true,
|
|
1771
1359
|
"content": {
|
|
1772
|
-
"
|
|
1360
|
+
"multipart/form-data": {
|
|
1773
1361
|
"schema": {
|
|
1774
|
-
"
|
|
1362
|
+
"type": "object",
|
|
1363
|
+
"properties": {
|
|
1364
|
+
"name": {
|
|
1365
|
+
"type": "string",
|
|
1366
|
+
"description": "Human-readable resource name"
|
|
1367
|
+
},
|
|
1368
|
+
"file": {
|
|
1369
|
+
"type": "string",
|
|
1370
|
+
"format": "binary",
|
|
1371
|
+
"description": "Binary content"
|
|
1372
|
+
},
|
|
1373
|
+
"format": {
|
|
1374
|
+
"type": "string",
|
|
1375
|
+
"description": "Media type of the content (e.g. text/plain, text/markdown, image/png)"
|
|
1376
|
+
},
|
|
1377
|
+
"storageUri": {
|
|
1378
|
+
"type": "string",
|
|
1379
|
+
"description": "Where the content has been / should be placed (file://... for local). If omitted, derived from name + format."
|
|
1380
|
+
},
|
|
1381
|
+
"language": {
|
|
1382
|
+
"type": "string",
|
|
1383
|
+
"description": "ISO 639-1 language code"
|
|
1384
|
+
},
|
|
1385
|
+
"entityTypes": {
|
|
1386
|
+
"type": "string",
|
|
1387
|
+
"description": "JSON-stringified array of entity type names"
|
|
1388
|
+
},
|
|
1389
|
+
"creationMethod": {
|
|
1390
|
+
"type": "string",
|
|
1391
|
+
"description": "How this resource was created (api, ui, upload, reference, cli, clone, generated)"
|
|
1392
|
+
},
|
|
1393
|
+
"sourceAnnotationId": {
|
|
1394
|
+
"type": "string",
|
|
1395
|
+
"description": "For AI-generated resources: the annotation that triggered generation. Nested into generatedFrom.annotationId on the persisted event."
|
|
1396
|
+
},
|
|
1397
|
+
"sourceResourceId": {
|
|
1398
|
+
"type": "string",
|
|
1399
|
+
"description": "For AI-generated resources: the source resource the generating annotation lives on. Nested into generatedFrom.resourceId on the persisted event."
|
|
1400
|
+
},
|
|
1401
|
+
"generationPrompt": {
|
|
1402
|
+
"type": "string",
|
|
1403
|
+
"description": "For AI-generated resources: the prompt that drove generation"
|
|
1404
|
+
},
|
|
1405
|
+
"generator": {
|
|
1406
|
+
"type": "string",
|
|
1407
|
+
"description": "For AI-generated resources: JSON-stringified Agent (single object or array), capturing which model/worker produced the content"
|
|
1408
|
+
},
|
|
1409
|
+
"isDraft": {
|
|
1410
|
+
"type": "string",
|
|
1411
|
+
"description": "'true' or 'false' — whether the resource is a draft"
|
|
1412
|
+
}
|
|
1413
|
+
},
|
|
1414
|
+
"required": [
|
|
1415
|
+
"name",
|
|
1416
|
+
"file",
|
|
1417
|
+
"format"
|
|
1418
|
+
]
|
|
1775
1419
|
}
|
|
1776
1420
|
}
|
|
1777
1421
|
}
|
|
1778
1422
|
},
|
|
1779
1423
|
"responses": {
|
|
1780
1424
|
"202": {
|
|
1781
|
-
"description": "
|
|
1425
|
+
"description": "Resource accepted for creation",
|
|
1782
1426
|
"content": {
|
|
1783
1427
|
"application/json": {
|
|
1784
1428
|
"schema": {
|
|
1785
|
-
"
|
|
1786
|
-
"properties": {
|
|
1787
|
-
"correlationId": {
|
|
1788
|
-
"type": "string"
|
|
1789
|
-
}
|
|
1790
|
-
},
|
|
1791
|
-
"required": [
|
|
1792
|
-
"correlationId"
|
|
1793
|
-
]
|
|
1429
|
+
"$ref": "#/components/schemas/CreateResourceResponse"
|
|
1794
1430
|
}
|
|
1795
1431
|
}
|
|
1796
1432
|
}
|
|
1797
1433
|
},
|
|
1798
|
-
"
|
|
1799
|
-
"description": "
|
|
1434
|
+
"400": {
|
|
1435
|
+
"description": "Missing required fields (name, file, or format)",
|
|
1436
|
+
"content": {
|
|
1437
|
+
"application/json": {
|
|
1438
|
+
"schema": {
|
|
1439
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1800
1443
|
},
|
|
1801
|
-
"
|
|
1802
|
-
"description": "
|
|
1444
|
+
"401": {
|
|
1445
|
+
"description": "Authentication required",
|
|
1446
|
+
"content": {
|
|
1447
|
+
"application/json": {
|
|
1448
|
+
"schema": {
|
|
1449
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1803
1453
|
}
|
|
1804
1454
|
}
|
|
1805
1455
|
}
|
|
1806
1456
|
},
|
|
1807
|
-
"/resources/{
|
|
1808
|
-
"
|
|
1809
|
-
"summary": "
|
|
1810
|
-
"description": "
|
|
1457
|
+
"/resources/{id}": {
|
|
1458
|
+
"get": {
|
|
1459
|
+
"summary": "Get a resource (content-negotiated)",
|
|
1460
|
+
"description": "Content negotiation via the Accept header:\n- application/ld+json (default) — returns JSON-LD metadata including all annotations + inbound entity references\n- text/* or image/* or application/pdf — returns the raw representation bytes\n\nBinary payloads flow directly from the content store; metadata payloads go through the bus gateway.",
|
|
1811
1461
|
"tags": [
|
|
1812
|
-
"Resources"
|
|
1813
|
-
"Annotations",
|
|
1814
|
-
"AI"
|
|
1462
|
+
"Resources"
|
|
1815
1463
|
],
|
|
1816
1464
|
"security": [
|
|
1817
1465
|
{
|
|
@@ -1820,922 +1468,87 @@
|
|
|
1820
1468
|
],
|
|
1821
1469
|
"parameters": [
|
|
1822
1470
|
{
|
|
1471
|
+
"name": "id",
|
|
1472
|
+
"in": "path",
|
|
1473
|
+
"required": true,
|
|
1823
1474
|
"schema": {
|
|
1824
1475
|
"type": "string"
|
|
1825
|
-
}
|
|
1826
|
-
"required": true,
|
|
1827
|
-
"name": "resourceId",
|
|
1828
|
-
"in": "path",
|
|
1829
|
-
"description": "Resource ID"
|
|
1476
|
+
}
|
|
1830
1477
|
},
|
|
1831
1478
|
{
|
|
1479
|
+
"name": "Accept",
|
|
1480
|
+
"in": "header",
|
|
1481
|
+
"required": false,
|
|
1832
1482
|
"schema": {
|
|
1833
1483
|
"type": "string"
|
|
1834
1484
|
},
|
|
1835
|
-
"
|
|
1836
|
-
"name": "annotationId",
|
|
1837
|
-
"in": "path",
|
|
1838
|
-
"description": "Annotation ID"
|
|
1485
|
+
"description": "application/ld+json for metadata, or a text/image/pdf media type for raw content"
|
|
1839
1486
|
}
|
|
1840
1487
|
],
|
|
1841
|
-
"requestBody": {
|
|
1842
|
-
"required": true,
|
|
1843
|
-
"content": {
|
|
1844
|
-
"application/json": {
|
|
1845
|
-
"schema": {
|
|
1846
|
-
"$ref": "#/components/schemas/GatherAnnotationStreamRequest"
|
|
1847
|
-
}
|
|
1848
|
-
}
|
|
1849
|
-
}
|
|
1850
|
-
},
|
|
1851
1488
|
"responses": {
|
|
1852
|
-
"
|
|
1853
|
-
"description": "
|
|
1489
|
+
"200": {
|
|
1490
|
+
"description": "Resource content or metadata, depending on Accept",
|
|
1854
1491
|
"content": {
|
|
1855
|
-
"application/json": {
|
|
1492
|
+
"application/ld+json": {
|
|
1856
1493
|
"schema": {
|
|
1857
|
-
"
|
|
1858
|
-
"properties": {
|
|
1859
|
-
"correlationId": {
|
|
1860
|
-
"type": "string"
|
|
1861
|
-
}
|
|
1862
|
-
},
|
|
1863
|
-
"required": [
|
|
1864
|
-
"correlationId"
|
|
1865
|
-
]
|
|
1494
|
+
"$ref": "#/components/schemas/GetResourceResponse"
|
|
1866
1495
|
}
|
|
1867
|
-
}
|
|
1868
|
-
|
|
1869
|
-
},
|
|
1870
|
-
"401": {
|
|
1871
|
-
"description": "Authentication required"
|
|
1872
|
-
}
|
|
1873
|
-
}
|
|
1874
|
-
}
|
|
1875
|
-
},
|
|
1876
|
-
"/resources/{id}/referenced-by": {
|
|
1877
|
-
"get": {
|
|
1878
|
-
"summary": "Get Referenced By",
|
|
1879
|
-
"description": "Get resources that reference this resource",
|
|
1880
|
-
"tags": [
|
|
1881
|
-
"Resources",
|
|
1882
|
-
"Graph"
|
|
1883
|
-
],
|
|
1884
|
-
"security": [
|
|
1885
|
-
{
|
|
1886
|
-
"bearerAuth": []
|
|
1887
|
-
}
|
|
1888
|
-
],
|
|
1889
|
-
"parameters": [
|
|
1890
|
-
{
|
|
1891
|
-
"schema": {
|
|
1892
|
-
"type": "string"
|
|
1893
|
-
},
|
|
1894
|
-
"required": true,
|
|
1895
|
-
"name": "id",
|
|
1896
|
-
"in": "path"
|
|
1897
|
-
},
|
|
1898
|
-
{
|
|
1899
|
-
"schema": {
|
|
1900
|
-
"$ref": "#/components/schemas/Motivation"
|
|
1901
|
-
},
|
|
1902
|
-
"required": false,
|
|
1903
|
-
"name": "motivation",
|
|
1904
|
-
"in": "query",
|
|
1905
|
-
"description": "Filter incoming references by W3C motivation type (e.g., 'linking', 'commenting', 'highlighting')"
|
|
1906
|
-
}
|
|
1907
|
-
],
|
|
1908
|
-
"responses": {
|
|
1909
|
-
"200": {
|
|
1910
|
-
"description": "Resources that reference this resource",
|
|
1911
|
-
"content": {
|
|
1912
|
-
"application/json": {
|
|
1913
|
-
"schema": {
|
|
1914
|
-
"$ref": "#/components/schemas/GetReferencedByResponse"
|
|
1915
|
-
}
|
|
1916
|
-
}
|
|
1917
|
-
}
|
|
1918
|
-
}
|
|
1919
|
-
}
|
|
1920
|
-
}
|
|
1921
|
-
},
|
|
1922
|
-
"/api/clone-tokens/{token}": {
|
|
1923
|
-
"get": {
|
|
1924
|
-
"summary": "Get Resource by Clone Token",
|
|
1925
|
-
"description": "Retrieve a resource using a clone token",
|
|
1926
|
-
"tags": [
|
|
1927
|
-
"Resources"
|
|
1928
|
-
],
|
|
1929
|
-
"security": [
|
|
1930
|
-
{
|
|
1931
|
-
"bearerAuth": []
|
|
1932
|
-
}
|
|
1933
|
-
],
|
|
1934
|
-
"parameters": [
|
|
1935
|
-
{
|
|
1936
|
-
"schema": {
|
|
1937
|
-
"type": "string"
|
|
1938
|
-
},
|
|
1939
|
-
"required": true,
|
|
1940
|
-
"name": "token",
|
|
1941
|
-
"in": "path"
|
|
1942
|
-
}
|
|
1943
|
-
],
|
|
1944
|
-
"responses": {
|
|
1945
|
-
"200": {
|
|
1946
|
-
"description": "Resource retrieved successfully",
|
|
1947
|
-
"content": {
|
|
1948
|
-
"application/json": {
|
|
1949
|
-
"schema": {
|
|
1950
|
-
"$ref": "#/components/schemas/GetResourceByTokenResponse"
|
|
1951
|
-
}
|
|
1952
|
-
}
|
|
1953
|
-
}
|
|
1954
|
-
}
|
|
1955
|
-
}
|
|
1956
|
-
}
|
|
1957
|
-
},
|
|
1958
|
-
"/api/clone-tokens/create-resource": {
|
|
1959
|
-
"post": {
|
|
1960
|
-
"summary": "Create Resource from Clone Token",
|
|
1961
|
-
"description": "Create a new resource using a clone token",
|
|
1962
|
-
"tags": [
|
|
1963
|
-
"Resources"
|
|
1964
|
-
],
|
|
1965
|
-
"security": [
|
|
1966
|
-
{
|
|
1967
|
-
"bearerAuth": []
|
|
1968
|
-
}
|
|
1969
|
-
],
|
|
1970
|
-
"requestBody": {
|
|
1971
|
-
"content": {
|
|
1972
|
-
"application/json": {
|
|
1973
|
-
"schema": {
|
|
1974
|
-
"$ref": "#/components/schemas/CreateResourceFromTokenRequest"
|
|
1975
|
-
}
|
|
1976
|
-
}
|
|
1977
|
-
}
|
|
1978
|
-
},
|
|
1979
|
-
"responses": {
|
|
1980
|
-
"202": {
|
|
1981
|
-
"description": "Resource creation accepted",
|
|
1982
|
-
"content": {
|
|
1983
|
-
"application/json": {
|
|
1984
|
-
"schema": {
|
|
1985
|
-
"type": "object",
|
|
1986
|
-
"properties": {
|
|
1987
|
-
"resourceId": {
|
|
1988
|
-
"type": "string"
|
|
1989
|
-
}
|
|
1990
|
-
},
|
|
1991
|
-
"required": [
|
|
1992
|
-
"resourceId"
|
|
1993
|
-
]
|
|
1994
|
-
}
|
|
1995
|
-
}
|
|
1996
|
-
}
|
|
1997
|
-
}
|
|
1998
|
-
}
|
|
1999
|
-
}
|
|
2000
|
-
},
|
|
2001
|
-
"/resources/{id}/clone-with-token": {
|
|
2002
|
-
"post": {
|
|
2003
|
-
"summary": "Clone Resource with Token",
|
|
2004
|
-
"description": "Generate a temporary token for cloning a resource",
|
|
2005
|
-
"tags": [
|
|
2006
|
-
"Resources"
|
|
2007
|
-
],
|
|
2008
|
-
"security": [
|
|
2009
|
-
{
|
|
2010
|
-
"bearerAuth": []
|
|
2011
|
-
}
|
|
2012
|
-
],
|
|
2013
|
-
"parameters": [
|
|
2014
|
-
{
|
|
2015
|
-
"schema": {
|
|
2016
|
-
"type": "string"
|
|
2017
|
-
},
|
|
2018
|
-
"required": true,
|
|
2019
|
-
"name": "id",
|
|
2020
|
-
"in": "path"
|
|
2021
|
-
}
|
|
2022
|
-
],
|
|
2023
|
-
"responses": {
|
|
2024
|
-
"200": {
|
|
2025
|
-
"description": "Clone token generated successfully",
|
|
2026
|
-
"content": {
|
|
2027
|
-
"application/json": {
|
|
2028
|
-
"schema": {
|
|
2029
|
-
"$ref": "#/components/schemas/CloneResourceWithTokenResponse"
|
|
2030
|
-
}
|
|
2031
|
-
}
|
|
2032
|
-
}
|
|
2033
|
-
}
|
|
2034
|
-
}
|
|
2035
|
-
}
|
|
2036
|
-
},
|
|
2037
|
-
"/resources/{id}/annotations": {
|
|
2038
|
-
"get": {
|
|
2039
|
-
"summary": "Get Resource Annotations",
|
|
2040
|
-
"description": "Get all annotations (both highlights and references) in a resource",
|
|
2041
|
-
"tags": [
|
|
2042
|
-
"Resources",
|
|
2043
|
-
"Annotations"
|
|
2044
|
-
],
|
|
2045
|
-
"security": [
|
|
2046
|
-
{
|
|
2047
|
-
"bearerAuth": []
|
|
2048
|
-
}
|
|
2049
|
-
],
|
|
2050
|
-
"parameters": [
|
|
2051
|
-
{
|
|
2052
|
-
"schema": {
|
|
2053
|
-
"type": "string"
|
|
2054
|
-
},
|
|
2055
|
-
"required": true,
|
|
2056
|
-
"name": "id",
|
|
2057
|
-
"in": "path"
|
|
2058
|
-
}
|
|
2059
|
-
],
|
|
2060
|
-
"responses": {
|
|
2061
|
-
"200": {
|
|
2062
|
-
"description": "Resource annotations",
|
|
2063
|
-
"content": {
|
|
2064
|
-
"application/json": {
|
|
2065
|
-
"schema": {
|
|
2066
|
-
"$ref": "#/components/schemas/CreateResourceResponse"
|
|
2067
|
-
}
|
|
2068
|
-
}
|
|
2069
|
-
}
|
|
2070
|
-
}
|
|
2071
|
-
}
|
|
2072
|
-
},
|
|
2073
|
-
"post": {
|
|
2074
|
-
"summary": "Create Annotation",
|
|
2075
|
-
"description": "Create a new annotation/reference in a resource",
|
|
2076
|
-
"tags": [
|
|
2077
|
-
"Resources",
|
|
2078
|
-
"Annotations"
|
|
2079
|
-
],
|
|
2080
|
-
"security": [
|
|
2081
|
-
{
|
|
2082
|
-
"bearerAuth": []
|
|
2083
|
-
}
|
|
2084
|
-
],
|
|
2085
|
-
"parameters": [
|
|
2086
|
-
{
|
|
2087
|
-
"schema": {
|
|
2088
|
-
"type": "string"
|
|
2089
|
-
},
|
|
2090
|
-
"required": true,
|
|
2091
|
-
"name": "id",
|
|
2092
|
-
"in": "path",
|
|
2093
|
-
"description": "Resource ID"
|
|
2094
|
-
}
|
|
2095
|
-
],
|
|
2096
|
-
"requestBody": {
|
|
2097
|
-
"content": {
|
|
2098
|
-
"application/json": {
|
|
2099
|
-
"schema": {
|
|
2100
|
-
"$ref": "#/components/schemas/CreateAnnotationRequest"
|
|
2101
|
-
}
|
|
2102
|
-
}
|
|
2103
|
-
}
|
|
2104
|
-
},
|
|
2105
|
-
"responses": {
|
|
2106
|
-
"202": {
|
|
2107
|
-
"description": "Annotation creation accepted",
|
|
2108
|
-
"content": {
|
|
2109
|
-
"application/json": {
|
|
2110
|
-
"schema": {
|
|
2111
|
-
"type": "object",
|
|
2112
|
-
"properties": {
|
|
2113
|
-
"annotationId": {
|
|
2114
|
-
"type": "string"
|
|
2115
|
-
}
|
|
2116
|
-
},
|
|
2117
|
-
"required": [
|
|
2118
|
-
"annotationId"
|
|
2119
|
-
]
|
|
2120
|
-
}
|
|
2121
|
-
}
|
|
2122
|
-
}
|
|
2123
|
-
}
|
|
2124
|
-
}
|
|
2125
|
-
}
|
|
2126
|
-
},
|
|
2127
|
-
"/resources/{id}/events": {
|
|
2128
|
-
"get": {
|
|
2129
|
-
"summary": "Get Resource Event History",
|
|
2130
|
-
"description": "Get full event history for a resource with optional filtering",
|
|
2131
|
-
"tags": [
|
|
2132
|
-
"Resources",
|
|
2133
|
-
"Events"
|
|
2134
|
-
],
|
|
2135
|
-
"security": [
|
|
2136
|
-
{
|
|
2137
|
-
"bearerAuth": []
|
|
2138
|
-
}
|
|
2139
|
-
],
|
|
2140
|
-
"parameters": [
|
|
2141
|
-
{
|
|
2142
|
-
"schema": {
|
|
2143
|
-
"type": "string"
|
|
2144
|
-
},
|
|
2145
|
-
"required": true,
|
|
2146
|
-
"name": "id",
|
|
2147
|
-
"in": "path"
|
|
2148
|
-
},
|
|
2149
|
-
{
|
|
2150
|
-
"schema": {
|
|
2151
|
-
"type": "string",
|
|
2152
|
-
"enum": [
|
|
2153
|
-
"resource.created",
|
|
2154
|
-
"resource.cloned",
|
|
2155
|
-
"resource.updated",
|
|
2156
|
-
"resource.moved",
|
|
2157
|
-
"resource.archived",
|
|
2158
|
-
"resource.unarchived",
|
|
2159
|
-
"annotation.added",
|
|
2160
|
-
"annotation.removed",
|
|
2161
|
-
"annotation.body.updated",
|
|
2162
|
-
"entitytag.added",
|
|
2163
|
-
"entitytag.removed",
|
|
2164
|
-
"entitytype.added"
|
|
2165
|
-
]
|
|
2166
|
-
},
|
|
2167
|
-
"required": false,
|
|
2168
|
-
"name": "type",
|
|
2169
|
-
"in": "query"
|
|
2170
|
-
},
|
|
2171
|
-
{
|
|
2172
|
-
"schema": {
|
|
2173
|
-
"type": "string"
|
|
2174
|
-
},
|
|
2175
|
-
"required": false,
|
|
2176
|
-
"name": "userId",
|
|
2177
|
-
"in": "query"
|
|
2178
|
-
},
|
|
2179
|
-
{
|
|
2180
|
-
"schema": {
|
|
2181
|
-
"type": "number",
|
|
2182
|
-
"minimum": 1,
|
|
2183
|
-
"maximum": 1000,
|
|
2184
|
-
"default": 100
|
|
2185
|
-
},
|
|
2186
|
-
"required": false,
|
|
2187
|
-
"name": "limit",
|
|
2188
|
-
"in": "query"
|
|
2189
|
-
}
|
|
2190
|
-
],
|
|
2191
|
-
"responses": {
|
|
2192
|
-
"200": {
|
|
2193
|
-
"description": "Events retrieved successfully",
|
|
2194
|
-
"content": {
|
|
2195
|
-
"application/json": {
|
|
2196
|
-
"schema": {
|
|
2197
|
-
"$ref": "#/components/schemas/GetEventsResponse"
|
|
2198
|
-
}
|
|
2199
|
-
}
|
|
2200
|
-
}
|
|
2201
|
-
}
|
|
2202
|
-
}
|
|
2203
|
-
}
|
|
2204
|
-
},
|
|
2205
|
-
"/resources/{id}/events/stream": {
|
|
2206
|
-
"get": {
|
|
2207
|
-
"summary": "Subscribe to Resource Events (SSE)",
|
|
2208
|
-
"description": "Open a Server-Sent Events stream to receive real-time resource events",
|
|
2209
|
-
"tags": [
|
|
2210
|
-
"Resources",
|
|
2211
|
-
"Events",
|
|
2212
|
-
"Real-time"
|
|
2213
|
-
],
|
|
2214
|
-
"security": [
|
|
2215
|
-
{
|
|
2216
|
-
"bearerAuth": []
|
|
2217
|
-
}
|
|
2218
|
-
],
|
|
2219
|
-
"parameters": [
|
|
2220
|
-
{
|
|
2221
|
-
"schema": {
|
|
2222
|
-
"type": "string"
|
|
2223
|
-
},
|
|
2224
|
-
"required": true,
|
|
2225
|
-
"name": "id",
|
|
2226
|
-
"in": "path"
|
|
2227
|
-
}
|
|
2228
|
-
],
|
|
2229
|
-
"responses": {
|
|
2230
|
-
"200": {
|
|
2231
|
-
"description": "SSE stream opened successfully",
|
|
2232
|
-
"content": {
|
|
2233
|
-
"text/event-stream": {
|
|
2234
|
-
"schema": {
|
|
2235
|
-
"$ref": "#/components/schemas/EventStreamResponse"
|
|
2236
|
-
}
|
|
2237
|
-
}
|
|
2238
|
-
}
|
|
2239
|
-
}
|
|
2240
|
-
}
|
|
2241
|
-
}
|
|
2242
|
-
},
|
|
2243
|
-
"/resources/{resourceId}/annotations/{annotationId}": {
|
|
2244
|
-
"get": {
|
|
2245
|
-
"summary": "Get Annotation",
|
|
2246
|
-
"description": "Get a specific annotation from a resource using nested path",
|
|
2247
|
-
"tags": [
|
|
2248
|
-
"Resources",
|
|
2249
|
-
"Annotations"
|
|
2250
|
-
],
|
|
2251
|
-
"security": [
|
|
2252
|
-
{
|
|
2253
|
-
"bearerAuth": []
|
|
2254
|
-
}
|
|
2255
|
-
],
|
|
2256
|
-
"parameters": [
|
|
2257
|
-
{
|
|
2258
|
-
"schema": {
|
|
2259
|
-
"type": "string"
|
|
2260
|
-
},
|
|
2261
|
-
"required": true,
|
|
2262
|
-
"name": "resourceId",
|
|
2263
|
-
"in": "path",
|
|
2264
|
-
"description": "Resource ID"
|
|
2265
|
-
},
|
|
2266
|
-
{
|
|
2267
|
-
"schema": {
|
|
2268
|
-
"type": "string"
|
|
2269
|
-
},
|
|
2270
|
-
"required": true,
|
|
2271
|
-
"name": "annotationId",
|
|
2272
|
-
"in": "path",
|
|
2273
|
-
"description": "Annotation ID"
|
|
2274
|
-
}
|
|
2275
|
-
],
|
|
2276
|
-
"responses": {
|
|
2277
|
-
"200": {
|
|
2278
|
-
"description": "Annotation retrieved successfully",
|
|
2279
|
-
"content": {
|
|
2280
|
-
"application/json": {
|
|
2281
|
-
"schema": {
|
|
2282
|
-
"$ref": "#/components/schemas/GetAnnotationResponse"
|
|
2283
|
-
}
|
|
2284
|
-
}
|
|
2285
|
-
}
|
|
2286
|
-
},
|
|
2287
|
-
"404": {
|
|
2288
|
-
"description": "Annotation not found"
|
|
2289
|
-
}
|
|
2290
|
-
}
|
|
2291
|
-
},
|
|
2292
|
-
"delete": {
|
|
2293
|
-
"summary": "Delete Annotation",
|
|
2294
|
-
"description": "Delete an annotation from a resource",
|
|
2295
|
-
"tags": [
|
|
2296
|
-
"Resources",
|
|
2297
|
-
"Annotations"
|
|
2298
|
-
],
|
|
2299
|
-
"security": [
|
|
2300
|
-
{
|
|
2301
|
-
"bearerAuth": []
|
|
2302
|
-
}
|
|
2303
|
-
],
|
|
2304
|
-
"parameters": [
|
|
2305
|
-
{
|
|
2306
|
-
"schema": {
|
|
2307
|
-
"type": "string"
|
|
2308
|
-
},
|
|
2309
|
-
"required": true,
|
|
2310
|
-
"name": "resourceId",
|
|
2311
|
-
"in": "path",
|
|
2312
|
-
"description": "Resource ID"
|
|
2313
|
-
},
|
|
2314
|
-
{
|
|
2315
|
-
"schema": {
|
|
2316
|
-
"type": "string"
|
|
2317
|
-
},
|
|
2318
|
-
"required": true,
|
|
2319
|
-
"name": "annotationId",
|
|
2320
|
-
"in": "path",
|
|
2321
|
-
"description": "Annotation ID"
|
|
2322
|
-
}
|
|
2323
|
-
],
|
|
2324
|
-
"responses": {
|
|
2325
|
-
"202": {
|
|
2326
|
-
"description": "Annotation deletion accepted"
|
|
2327
|
-
}
|
|
2328
|
-
}
|
|
2329
|
-
}
|
|
2330
|
-
},
|
|
2331
|
-
"/resources/{resourceId}/annotations/{annotationId}/body": {
|
|
2332
|
-
"put": {
|
|
2333
|
-
"summary": "Update Annotation Body",
|
|
2334
|
-
"description": "Apply fine-grained operations to modify annotation body items (add, remove, or replace TextualBody and SpecificResource items)",
|
|
2335
|
-
"tags": [
|
|
2336
|
-
"Resources",
|
|
2337
|
-
"Annotations"
|
|
2338
|
-
],
|
|
2339
|
-
"security": [
|
|
2340
|
-
{
|
|
2341
|
-
"bearerAuth": []
|
|
2342
|
-
}
|
|
2343
|
-
],
|
|
2344
|
-
"parameters": [
|
|
2345
|
-
{
|
|
2346
|
-
"schema": {
|
|
2347
|
-
"type": "string"
|
|
2348
|
-
},
|
|
2349
|
-
"required": true,
|
|
2350
|
-
"name": "resourceId",
|
|
2351
|
-
"in": "path",
|
|
2352
|
-
"description": "Resource ID"
|
|
2353
|
-
},
|
|
2354
|
-
{
|
|
2355
|
-
"schema": {
|
|
2356
|
-
"type": "string"
|
|
2357
|
-
},
|
|
2358
|
-
"required": true,
|
|
2359
|
-
"name": "annotationId",
|
|
2360
|
-
"in": "path",
|
|
2361
|
-
"description": "Annotation ID"
|
|
2362
|
-
}
|
|
2363
|
-
],
|
|
2364
|
-
"requestBody": {
|
|
2365
|
-
"content": {
|
|
2366
|
-
"application/json": {
|
|
2367
|
-
"schema": {
|
|
2368
|
-
"$ref": "#/components/schemas/UpdateAnnotationBodyRequest"
|
|
2369
|
-
}
|
|
2370
|
-
}
|
|
2371
|
-
}
|
|
2372
|
-
},
|
|
2373
|
-
"responses": {
|
|
2374
|
-
"202": {
|
|
2375
|
-
"description": "Annotation body update accepted"
|
|
2376
|
-
}
|
|
2377
|
-
}
|
|
2378
|
-
}
|
|
2379
|
-
},
|
|
2380
|
-
"/resources/{resourceId}/annotations/{annotationId}/yield-resource": {
|
|
2381
|
-
"post": {
|
|
2382
|
-
"summary": "Generate Resource from Annotation",
|
|
2383
|
-
"description": "Submit a resource generation command. Returns {correlationId, jobId} immediately. The generation worker processes the job asynchronously and delivers progress (yield:progress) and completion (yield:finished) or failure (yield:failed) via the events-stream to all connected clients.",
|
|
2384
|
-
"tags": [
|
|
2385
|
-
"Resources",
|
|
2386
|
-
"Annotations",
|
|
2387
|
-
"AI"
|
|
2388
|
-
],
|
|
2389
|
-
"security": [
|
|
2390
|
-
{
|
|
2391
|
-
"bearerAuth": []
|
|
2392
|
-
}
|
|
2393
|
-
],
|
|
2394
|
-
"parameters": [
|
|
2395
|
-
{
|
|
2396
|
-
"schema": {
|
|
2397
|
-
"type": "string"
|
|
2398
|
-
},
|
|
2399
|
-
"required": true,
|
|
2400
|
-
"name": "resourceId",
|
|
2401
|
-
"in": "path",
|
|
2402
|
-
"description": "Source resource ID"
|
|
2403
|
-
},
|
|
2404
|
-
{
|
|
2405
|
-
"schema": {
|
|
2406
|
-
"type": "string"
|
|
2407
|
-
},
|
|
2408
|
-
"required": true,
|
|
2409
|
-
"name": "annotationId",
|
|
2410
|
-
"in": "path",
|
|
2411
|
-
"description": "Reference annotation ID"
|
|
2412
|
-
}
|
|
2413
|
-
],
|
|
2414
|
-
"requestBody": {
|
|
2415
|
-
"required": true,
|
|
2416
|
-
"content": {
|
|
2417
|
-
"application/json": {
|
|
2418
|
-
"schema": {
|
|
2419
|
-
"$ref": "#/components/schemas/YieldResourceStreamRequest"
|
|
2420
|
-
}
|
|
2421
|
-
}
|
|
2422
|
-
}
|
|
2423
|
-
},
|
|
2424
|
-
"responses": {
|
|
2425
|
-
"202": {
|
|
2426
|
-
"description": "Generation command accepted. Progress and results delivered via events-stream.",
|
|
2427
|
-
"content": {
|
|
2428
|
-
"application/json": {
|
|
2429
|
-
"schema": {
|
|
2430
|
-
"type": "object",
|
|
2431
|
-
"properties": {
|
|
2432
|
-
"correlationId": {
|
|
2433
|
-
"type": "string"
|
|
2434
|
-
},
|
|
2435
|
-
"jobId": {
|
|
2436
|
-
"type": "string"
|
|
2437
|
-
}
|
|
2438
|
-
},
|
|
2439
|
-
"required": [
|
|
2440
|
-
"correlationId",
|
|
2441
|
-
"jobId"
|
|
2442
|
-
]
|
|
2443
|
-
}
|
|
2444
|
-
}
|
|
2445
|
-
}
|
|
2446
|
-
},
|
|
2447
|
-
"400": {
|
|
2448
|
-
"description": "Context is required for generation"
|
|
2449
|
-
},
|
|
2450
|
-
"401": {
|
|
2451
|
-
"description": "Authentication required"
|
|
2452
|
-
},
|
|
2453
|
-
"404": {
|
|
2454
|
-
"description": "Annotation not found"
|
|
2455
|
-
}
|
|
2456
|
-
}
|
|
2457
|
-
}
|
|
2458
|
-
},
|
|
2459
|
-
"/resources/{resourceId}/annotations/{annotationId}/history": {
|
|
2460
|
-
"get": {
|
|
2461
|
-
"summary": "Get Annotation History",
|
|
2462
|
-
"description": "Get full event history for a specific annotation (highlight or reference)",
|
|
2463
|
-
"tags": [
|
|
2464
|
-
"Selections",
|
|
2465
|
-
"Events"
|
|
2466
|
-
],
|
|
2467
|
-
"security": [
|
|
2468
|
-
{
|
|
2469
|
-
"bearerAuth": []
|
|
2470
|
-
}
|
|
2471
|
-
],
|
|
2472
|
-
"parameters": [
|
|
2473
|
-
{
|
|
2474
|
-
"schema": {
|
|
2475
|
-
"type": "string"
|
|
2476
|
-
},
|
|
2477
|
-
"required": true,
|
|
2478
|
-
"name": "resourceId",
|
|
2479
|
-
"in": "path"
|
|
2480
|
-
},
|
|
2481
|
-
{
|
|
2482
|
-
"schema": {
|
|
2483
|
-
"type": "string"
|
|
2484
|
-
},
|
|
2485
|
-
"required": true,
|
|
2486
|
-
"name": "annotationId",
|
|
2487
|
-
"in": "path"
|
|
2488
|
-
}
|
|
2489
|
-
],
|
|
2490
|
-
"responses": {
|
|
2491
|
-
"200": {
|
|
2492
|
-
"description": "Annotation history retrieved successfully",
|
|
2493
|
-
"content": {
|
|
2494
|
-
"application/json": {
|
|
1496
|
+
},
|
|
1497
|
+
"text/plain": {
|
|
2495
1498
|
"schema": {
|
|
2496
|
-
"
|
|
1499
|
+
"type": "string"
|
|
2497
1500
|
}
|
|
2498
|
-
}
|
|
2499
|
-
|
|
2500
|
-
},
|
|
2501
|
-
"404": {
|
|
2502
|
-
"description": "Annotation not found"
|
|
2503
|
-
}
|
|
2504
|
-
}
|
|
2505
|
-
}
|
|
2506
|
-
},
|
|
2507
|
-
"/api/entity-types": {
|
|
2508
|
-
"get": {
|
|
2509
|
-
"summary": "Get Entity Types",
|
|
2510
|
-
"description": "Get list of available entity types for references",
|
|
2511
|
-
"tags": [
|
|
2512
|
-
"Selections"
|
|
2513
|
-
],
|
|
2514
|
-
"security": [
|
|
2515
|
-
{
|
|
2516
|
-
"bearerAuth": []
|
|
2517
|
-
}
|
|
2518
|
-
],
|
|
2519
|
-
"responses": {
|
|
2520
|
-
"200": {
|
|
2521
|
-
"description": "Entity types retrieved successfully",
|
|
2522
|
-
"content": {
|
|
2523
|
-
"application/json": {
|
|
1501
|
+
},
|
|
1502
|
+
"text/markdown": {
|
|
2524
1503
|
"schema": {
|
|
2525
|
-
"
|
|
1504
|
+
"type": "string"
|
|
2526
1505
|
}
|
|
2527
|
-
}
|
|
2528
|
-
|
|
2529
|
-
}
|
|
2530
|
-
}
|
|
2531
|
-
},
|
|
2532
|
-
"post": {
|
|
2533
|
-
"summary": "Add Entity Type",
|
|
2534
|
-
"description": "Add a new entity type to the collection (append-only, requires moderator/admin)",
|
|
2535
|
-
"tags": [
|
|
2536
|
-
"Selections"
|
|
2537
|
-
],
|
|
2538
|
-
"security": [
|
|
2539
|
-
{
|
|
2540
|
-
"bearerAuth": []
|
|
2541
|
-
}
|
|
2542
|
-
],
|
|
2543
|
-
"requestBody": {
|
|
2544
|
-
"content": {
|
|
2545
|
-
"application/json": {
|
|
2546
|
-
"schema": {
|
|
2547
|
-
"$ref": "#/components/schemas/AddEntityTypeRequest"
|
|
2548
|
-
}
|
|
2549
|
-
}
|
|
2550
|
-
}
|
|
2551
|
-
},
|
|
2552
|
-
"responses": {
|
|
2553
|
-
"202": {
|
|
2554
|
-
"description": "Entity type addition accepted"
|
|
2555
|
-
},
|
|
2556
|
-
"403": {
|
|
2557
|
-
"description": "Forbidden - Moderator or Admin access required",
|
|
2558
|
-
"content": {
|
|
2559
|
-
"application/json": {
|
|
1506
|
+
},
|
|
1507
|
+
"text/html": {
|
|
2560
1508
|
"schema": {
|
|
2561
|
-
"
|
|
1509
|
+
"type": "string"
|
|
2562
1510
|
}
|
|
2563
|
-
}
|
|
2564
|
-
|
|
2565
|
-
}
|
|
2566
|
-
}
|
|
2567
|
-
}
|
|
2568
|
-
},
|
|
2569
|
-
"/api/entity-types/bulk": {
|
|
2570
|
-
"post": {
|
|
2571
|
-
"summary": "Bulk Add Entity Types",
|
|
2572
|
-
"description": "Add multiple entity types to the collection (append-only, requires moderator/admin)",
|
|
2573
|
-
"tags": [
|
|
2574
|
-
"Selections"
|
|
2575
|
-
],
|
|
2576
|
-
"security": [
|
|
2577
|
-
{
|
|
2578
|
-
"bearerAuth": []
|
|
2579
|
-
}
|
|
2580
|
-
],
|
|
2581
|
-
"requestBody": {
|
|
2582
|
-
"content": {
|
|
2583
|
-
"application/json": {
|
|
2584
|
-
"schema": {
|
|
2585
|
-
"$ref": "#/components/schemas/BulkAddEntityTypesRequest"
|
|
2586
|
-
}
|
|
2587
|
-
}
|
|
2588
|
-
}
|
|
2589
|
-
},
|
|
2590
|
-
"responses": {
|
|
2591
|
-
"202": {
|
|
2592
|
-
"description": "Entity types addition accepted"
|
|
2593
|
-
},
|
|
2594
|
-
"403": {
|
|
2595
|
-
"description": "Forbidden - Moderator or Admin access required",
|
|
2596
|
-
"content": {
|
|
2597
|
-
"application/json": {
|
|
1511
|
+
},
|
|
1512
|
+
"image/*": {
|
|
2598
1513
|
"schema": {
|
|
2599
|
-
"
|
|
1514
|
+
"type": "string",
|
|
1515
|
+
"format": "binary"
|
|
2600
1516
|
}
|
|
2601
|
-
}
|
|
2602
|
-
|
|
2603
|
-
}
|
|
2604
|
-
}
|
|
2605
|
-
}
|
|
2606
|
-
},
|
|
2607
|
-
"/api/events/stream": {
|
|
2608
|
-
"get": {
|
|
2609
|
-
"summary": "Subscribe to Global Events (SSE)",
|
|
2610
|
-
"description": "Open a Server-Sent Events stream to receive real-time system-level events (e.g., entity type changes). Events not scoped to a specific resource are delivered on this channel.",
|
|
2611
|
-
"tags": [
|
|
2612
|
-
"Events",
|
|
2613
|
-
"Real-time"
|
|
2614
|
-
],
|
|
2615
|
-
"security": [
|
|
2616
|
-
{
|
|
2617
|
-
"bearerAuth": []
|
|
2618
|
-
}
|
|
2619
|
-
],
|
|
2620
|
-
"responses": {
|
|
2621
|
-
"200": {
|
|
2622
|
-
"description": "SSE stream opened successfully",
|
|
2623
|
-
"content": {
|
|
2624
|
-
"text/event-stream": {
|
|
1517
|
+
},
|
|
1518
|
+
"application/pdf": {
|
|
2625
1519
|
"schema": {
|
|
2626
|
-
"
|
|
1520
|
+
"type": "string",
|
|
1521
|
+
"format": "binary"
|
|
2627
1522
|
}
|
|
2628
1523
|
}
|
|
2629
1524
|
}
|
|
2630
|
-
}
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
},
|
|
2634
|
-
"/api/jobs/{id}": {
|
|
2635
|
-
"get": {
|
|
2636
|
-
"summary": "Get Job Status",
|
|
2637
|
-
"description": "Get the current status and progress of an async job",
|
|
2638
|
-
"tags": [
|
|
2639
|
-
"Jobs"
|
|
2640
|
-
],
|
|
2641
|
-
"security": [
|
|
2642
|
-
{
|
|
2643
|
-
"bearerAuth": []
|
|
2644
|
-
}
|
|
2645
|
-
],
|
|
2646
|
-
"parameters": [
|
|
2647
|
-
{
|
|
2648
|
-
"schema": {
|
|
2649
|
-
"type": "string"
|
|
2650
|
-
},
|
|
2651
|
-
"required": true,
|
|
2652
|
-
"name": "id",
|
|
2653
|
-
"in": "path"
|
|
2654
|
-
}
|
|
2655
|
-
],
|
|
2656
|
-
"responses": {
|
|
2657
|
-
"200": {
|
|
2658
|
-
"description": "Job status retrieved successfully",
|
|
1525
|
+
},
|
|
1526
|
+
"404": {
|
|
1527
|
+
"description": "Resource not found",
|
|
2659
1528
|
"content": {
|
|
2660
1529
|
"application/json": {
|
|
2661
1530
|
"schema": {
|
|
2662
|
-
"$ref": "#/components/schemas/
|
|
1531
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
2663
1532
|
}
|
|
2664
1533
|
}
|
|
2665
1534
|
}
|
|
2666
1535
|
},
|
|
2667
|
-
"
|
|
2668
|
-
"description": "
|
|
2669
|
-
}
|
|
2670
|
-
}
|
|
2671
|
-
}
|
|
2672
|
-
},
|
|
2673
|
-
"/api/participants/{id}/attention": {
|
|
2674
|
-
"post": {
|
|
2675
|
-
"summary": "Beckon Participant",
|
|
2676
|
-
"description": "Direct a participant's attention to a resource or annotation. Produces no persistent annotations — attention signal only. The participant may be a human username or an agent identifier.",
|
|
2677
|
-
"tags": [
|
|
2678
|
-
"Participants"
|
|
2679
|
-
],
|
|
2680
|
-
"security": [
|
|
2681
|
-
{
|
|
2682
|
-
"bearerAuth": []
|
|
2683
|
-
}
|
|
2684
|
-
],
|
|
2685
|
-
"parameters": [
|
|
2686
|
-
{
|
|
2687
|
-
"schema": {
|
|
2688
|
-
"type": "string"
|
|
2689
|
-
},
|
|
2690
|
-
"required": true,
|
|
2691
|
-
"name": "id",
|
|
2692
|
-
"in": "path",
|
|
2693
|
-
"description": "Participant username or agent identifier"
|
|
2694
|
-
}
|
|
2695
|
-
],
|
|
2696
|
-
"requestBody": {
|
|
2697
|
-
"required": true,
|
|
2698
|
-
"content": {
|
|
2699
|
-
"application/json": {
|
|
2700
|
-
"schema": {
|
|
2701
|
-
"$ref": "#/components/schemas/BeckonRequest"
|
|
2702
|
-
}
|
|
2703
|
-
}
|
|
2704
|
-
}
|
|
2705
|
-
},
|
|
2706
|
-
"responses": {
|
|
2707
|
-
"202": {
|
|
2708
|
-
"description": "Attention signal accepted",
|
|
1536
|
+
"500": {
|
|
1537
|
+
"description": "Failed to retrieve resource",
|
|
2709
1538
|
"content": {
|
|
2710
1539
|
"application/json": {
|
|
2711
1540
|
"schema": {
|
|
2712
|
-
"$ref": "#/components/schemas/
|
|
1541
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
2713
1542
|
}
|
|
2714
1543
|
}
|
|
2715
1544
|
}
|
|
2716
|
-
}
|
|
2717
|
-
|
|
2718
|
-
|
|
2719
|
-
},
|
|
2720
|
-
"/api/participants/me/attention-stream": {
|
|
2721
|
-
"get": {
|
|
2722
|
-
"summary": "Participant Attention Stream",
|
|
2723
|
-
"description": "Open a persistent SSE connection to receive beckon signals directed at the authenticated participant. Signals are ephemeral — delivered if connected, dropped if not. No queue, no replay.",
|
|
2724
|
-
"tags": [
|
|
2725
|
-
"Participants"
|
|
2726
|
-
],
|
|
2727
|
-
"security": [
|
|
2728
|
-
{
|
|
2729
|
-
"bearerAuth": []
|
|
2730
|
-
}
|
|
2731
|
-
],
|
|
2732
|
-
"responses": {
|
|
2733
|
-
"200": {
|
|
2734
|
-
"description": "SSE stream of beckon:focus events",
|
|
1545
|
+
},
|
|
1546
|
+
"504": {
|
|
1547
|
+
"description": "Request timed out (bus gateway)",
|
|
2735
1548
|
"content": {
|
|
2736
|
-
"
|
|
1549
|
+
"application/json": {
|
|
2737
1550
|
"schema": {
|
|
2738
|
-
"
|
|
1551
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
2739
1552
|
}
|
|
2740
1553
|
}
|
|
2741
1554
|
}
|
|
@@ -2743,12 +1556,12 @@
|
|
|
2743
1556
|
}
|
|
2744
1557
|
}
|
|
2745
1558
|
},
|
|
2746
|
-
"/api/
|
|
1559
|
+
"/api/resources/{id}": {
|
|
2747
1560
|
"get": {
|
|
2748
|
-
"summary": "
|
|
2749
|
-
"description": "
|
|
1561
|
+
"summary": "Get raw resource content (browser-friendly alias)",
|
|
1562
|
+
"description": "Browser-friendly alternative to GET /resources/{id} that always returns the raw representation, never JSON-LD. Used by `<img>` / PDF.js / `<video>` tags and anywhere an httpOnly cookie is the only feasible auth vector. Behaves like GET /resources/{id} with JSON-LD stripped from the Accept header before content negotiation.\n\nSets long-lived immutable Cache-Control (content is addressed by checksum upstream, so bytes never change for a given resource id).",
|
|
2750
1563
|
"tags": [
|
|
2751
|
-
"
|
|
1564
|
+
"Resources"
|
|
2752
1565
|
],
|
|
2753
1566
|
"security": [
|
|
2754
1567
|
{
|
|
@@ -2757,44 +1570,49 @@
|
|
|
2757
1570
|
],
|
|
2758
1571
|
"parameters": [
|
|
2759
1572
|
{
|
|
2760
|
-
"name": "
|
|
2761
|
-
"in": "
|
|
2762
|
-
"required":
|
|
2763
|
-
"schema": {
|
|
2764
|
-
"type": "string",
|
|
2765
|
-
"default": ""
|
|
2766
|
-
},
|
|
2767
|
-
"description": "Directory path relative to project root. Empty string or omit for project root."
|
|
2768
|
-
},
|
|
2769
|
-
{
|
|
2770
|
-
"name": "sort",
|
|
2771
|
-
"in": "query",
|
|
2772
|
-
"required": false,
|
|
1573
|
+
"name": "id",
|
|
1574
|
+
"in": "path",
|
|
1575
|
+
"required": true,
|
|
2773
1576
|
"schema": {
|
|
2774
|
-
"type": "string"
|
|
2775
|
-
|
|
2776
|
-
"name",
|
|
2777
|
-
"mtime",
|
|
2778
|
-
"annotationCount"
|
|
2779
|
-
],
|
|
2780
|
-
"default": "name"
|
|
2781
|
-
},
|
|
2782
|
-
"description": "Sort order for directory entries."
|
|
1577
|
+
"type": "string"
|
|
1578
|
+
}
|
|
2783
1579
|
}
|
|
2784
1580
|
],
|
|
2785
1581
|
"responses": {
|
|
2786
1582
|
"200": {
|
|
2787
|
-
"description": "
|
|
1583
|
+
"description": "Raw representation bytes with appropriate Content-Type",
|
|
2788
1584
|
"content": {
|
|
2789
|
-
"
|
|
1585
|
+
"text/plain": {
|
|
1586
|
+
"schema": {
|
|
1587
|
+
"type": "string"
|
|
1588
|
+
}
|
|
1589
|
+
},
|
|
1590
|
+
"text/markdown": {
|
|
1591
|
+
"schema": {
|
|
1592
|
+
"type": "string"
|
|
1593
|
+
}
|
|
1594
|
+
},
|
|
1595
|
+
"text/html": {
|
|
1596
|
+
"schema": {
|
|
1597
|
+
"type": "string"
|
|
1598
|
+
}
|
|
1599
|
+
},
|
|
1600
|
+
"image/*": {
|
|
1601
|
+
"schema": {
|
|
1602
|
+
"type": "string",
|
|
1603
|
+
"format": "binary"
|
|
1604
|
+
}
|
|
1605
|
+
},
|
|
1606
|
+
"application/pdf": {
|
|
2790
1607
|
"schema": {
|
|
2791
|
-
"
|
|
1608
|
+
"type": "string",
|
|
1609
|
+
"format": "binary"
|
|
2792
1610
|
}
|
|
2793
1611
|
}
|
|
2794
1612
|
}
|
|
2795
1613
|
},
|
|
2796
|
-
"
|
|
2797
|
-
"description": "
|
|
1614
|
+
"404": {
|
|
1615
|
+
"description": "Resource or representation not found",
|
|
2798
1616
|
"content": {
|
|
2799
1617
|
"application/json": {
|
|
2800
1618
|
"schema": {
|
|
@@ -2803,8 +1621,8 @@
|
|
|
2803
1621
|
}
|
|
2804
1622
|
}
|
|
2805
1623
|
},
|
|
2806
|
-
"
|
|
2807
|
-
"description": "
|
|
1624
|
+
"500": {
|
|
1625
|
+
"description": "Failed to retrieve resource",
|
|
2808
1626
|
"content": {
|
|
2809
1627
|
"application/json": {
|
|
2810
1628
|
"schema": {
|
|
@@ -2834,19 +1652,6 @@
|
|
|
2834
1652
|
"message"
|
|
2835
1653
|
]
|
|
2836
1654
|
},
|
|
2837
|
-
"AddEntityTypeRequest": {
|
|
2838
|
-
"type": "object",
|
|
2839
|
-
"properties": {
|
|
2840
|
-
"tag": {
|
|
2841
|
-
"type": "string",
|
|
2842
|
-
"minLength": 1,
|
|
2843
|
-
"maxLength": 100
|
|
2844
|
-
}
|
|
2845
|
-
},
|
|
2846
|
-
"required": [
|
|
2847
|
-
"tag"
|
|
2848
|
-
]
|
|
2849
|
-
},
|
|
2850
1655
|
"AdminUpdateUserResponse": {
|
|
2851
1656
|
"type": "object",
|
|
2852
1657
|
"properties": {
|
|
@@ -3148,14 +1953,6 @@
|
|
|
3148
1953
|
},
|
|
3149
1954
|
"body": {
|
|
3150
1955
|
"oneOf": [
|
|
3151
|
-
{
|
|
3152
|
-
"type": "array",
|
|
3153
|
-
"items": {
|
|
3154
|
-
"$ref": "#/components/schemas/AnnotationBody"
|
|
3155
|
-
},
|
|
3156
|
-
"maxItems": 0,
|
|
3157
|
-
"description": "Empty array for stub references (Phase 1 pattern)"
|
|
3158
|
-
},
|
|
3159
1956
|
{
|
|
3160
1957
|
"$ref": "#/components/schemas/AnnotationBody",
|
|
3161
1958
|
"description": "Single body (TextualBody or SpecificResource)"
|
|
@@ -3165,10 +1962,11 @@
|
|
|
3165
1962
|
"items": {
|
|
3166
1963
|
"$ref": "#/components/schemas/AnnotationBody"
|
|
3167
1964
|
},
|
|
3168
|
-
"
|
|
1965
|
+
"minItems": 1,
|
|
1966
|
+
"description": "Non-empty array of mixed TextualBody (tagging) and SpecificResource (linking) bodies"
|
|
3169
1967
|
}
|
|
3170
1968
|
],
|
|
3171
|
-
"description": "W3C Web Annotation body
|
|
1969
|
+
"description": "W3C Web Annotation body. Optional per the W3C spec — annotations whose motivation alone is meaningful (highlighting) legitimately omit it. Present values are either a single body or a non-empty array of bodies; the prior empty-array 'stub' branch has been removed (it was a naming lie shared between highlights and never-actually-emitted stub references, and the source of the #651 reference-annotation validator bug)."
|
|
3172
1970
|
},
|
|
3173
1971
|
"creator": {
|
|
3174
1972
|
"$ref": "#/components/schemas/Agent"
|
|
@@ -3188,8 +1986,7 @@
|
|
|
3188
1986
|
"type",
|
|
3189
1987
|
"id",
|
|
3190
1988
|
"motivation",
|
|
3191
|
-
"target"
|
|
3192
|
-
"body"
|
|
1989
|
+
"target"
|
|
3193
1990
|
]
|
|
3194
1991
|
},
|
|
3195
1992
|
"AnnotationBody": {
|
|
@@ -3369,40 +2166,6 @@
|
|
|
3369
2166
|
],
|
|
3370
2167
|
"description": "W3C Web Annotation target object - source is required, selector is optional"
|
|
3371
2168
|
},
|
|
3372
|
-
"AsyncJobResponse": {
|
|
3373
|
-
"type": "object",
|
|
3374
|
-
"properties": {
|
|
3375
|
-
"jobId": {
|
|
3376
|
-
"type": "string"
|
|
3377
|
-
},
|
|
3378
|
-
"status": {
|
|
3379
|
-
"type": "string",
|
|
3380
|
-
"enum": [
|
|
3381
|
-
"pending",
|
|
3382
|
-
"running",
|
|
3383
|
-
"complete",
|
|
3384
|
-
"failed",
|
|
3385
|
-
"cancelled"
|
|
3386
|
-
]
|
|
3387
|
-
},
|
|
3388
|
-
"type": {
|
|
3389
|
-
"type": "string",
|
|
3390
|
-
"enum": [
|
|
3391
|
-
"reference-annotation",
|
|
3392
|
-
"generation"
|
|
3393
|
-
]
|
|
3394
|
-
},
|
|
3395
|
-
"created": {
|
|
3396
|
-
"type": "string"
|
|
3397
|
-
}
|
|
3398
|
-
},
|
|
3399
|
-
"required": [
|
|
3400
|
-
"jobId",
|
|
3401
|
-
"status",
|
|
3402
|
-
"type",
|
|
3403
|
-
"created"
|
|
3404
|
-
]
|
|
3405
|
-
},
|
|
3406
2169
|
"AuthResponse": {
|
|
3407
2170
|
"type": "object",
|
|
3408
2171
|
"properties": {
|
|
@@ -3482,6 +2245,148 @@
|
|
|
3482
2245
|
},
|
|
3483
2246
|
"additionalProperties": false
|
|
3484
2247
|
},
|
|
2248
|
+
"BusEmitRequest": {
|
|
2249
|
+
"type": "object",
|
|
2250
|
+
"description": "Emit an event on the Semiont bus. Channel names come from bus-protocol.ts; payload shape is validated against the channel's registered schema (CHANNEL_SCHEMAS). An optional scope routes resource-scoped broadcasts (e.g. mark:added, job:complete) to per-resource subscribers via eventBus.scope(scope); leave it unset for unscoped/global events.",
|
|
2251
|
+
"properties": {
|
|
2252
|
+
"channel": {
|
|
2253
|
+
"type": "string",
|
|
2254
|
+
"description": "Channel name from bus-protocol.ts EventMap"
|
|
2255
|
+
},
|
|
2256
|
+
"payload": {
|
|
2257
|
+
"type": "object",
|
|
2258
|
+
"description": "Channel-specific payload, validated against CHANNEL_SCHEMAS",
|
|
2259
|
+
"additionalProperties": true
|
|
2260
|
+
},
|
|
2261
|
+
"scope": {
|
|
2262
|
+
"type": "string",
|
|
2263
|
+
"description": "Optional resource scope for broadcast channels (e.g. resourceId). Publishers only — frontends must never set this.",
|
|
2264
|
+
"minLength": 1
|
|
2265
|
+
}
|
|
2266
|
+
},
|
|
2267
|
+
"required": [
|
|
2268
|
+
"channel",
|
|
2269
|
+
"payload"
|
|
2270
|
+
]
|
|
2271
|
+
},
|
|
2272
|
+
"CookieConsent": {
|
|
2273
|
+
"type": "object",
|
|
2274
|
+
"description": "User's cookie consent preferences. `necessary` is always true — necessary cookies cannot be disabled. Timestamps and version are stamped server-side.",
|
|
2275
|
+
"properties": {
|
|
2276
|
+
"necessary": {
|
|
2277
|
+
"type": "boolean",
|
|
2278
|
+
"enum": [
|
|
2279
|
+
true
|
|
2280
|
+
]
|
|
2281
|
+
},
|
|
2282
|
+
"analytics": {
|
|
2283
|
+
"type": "boolean"
|
|
2284
|
+
},
|
|
2285
|
+
"marketing": {
|
|
2286
|
+
"type": "boolean"
|
|
2287
|
+
},
|
|
2288
|
+
"preferences": {
|
|
2289
|
+
"type": "boolean"
|
|
2290
|
+
},
|
|
2291
|
+
"timestamp": {
|
|
2292
|
+
"type": "string",
|
|
2293
|
+
"format": "date-time"
|
|
2294
|
+
},
|
|
2295
|
+
"version": {
|
|
2296
|
+
"type": "string"
|
|
2297
|
+
}
|
|
2298
|
+
},
|
|
2299
|
+
"required": [
|
|
2300
|
+
"necessary",
|
|
2301
|
+
"analytics",
|
|
2302
|
+
"marketing",
|
|
2303
|
+
"preferences",
|
|
2304
|
+
"timestamp",
|
|
2305
|
+
"version"
|
|
2306
|
+
]
|
|
2307
|
+
},
|
|
2308
|
+
"CookieConsentRequest": {
|
|
2309
|
+
"type": "object",
|
|
2310
|
+
"description": "Request body for POST /api/cookies/consent. All four preference fields must be booleans; `necessary` must be true.",
|
|
2311
|
+
"properties": {
|
|
2312
|
+
"necessary": {
|
|
2313
|
+
"type": "boolean",
|
|
2314
|
+
"enum": [
|
|
2315
|
+
true
|
|
2316
|
+
]
|
|
2317
|
+
},
|
|
2318
|
+
"analytics": {
|
|
2319
|
+
"type": "boolean"
|
|
2320
|
+
},
|
|
2321
|
+
"marketing": {
|
|
2322
|
+
"type": "boolean"
|
|
2323
|
+
},
|
|
2324
|
+
"preferences": {
|
|
2325
|
+
"type": "boolean"
|
|
2326
|
+
}
|
|
2327
|
+
},
|
|
2328
|
+
"required": [
|
|
2329
|
+
"necessary",
|
|
2330
|
+
"analytics",
|
|
2331
|
+
"marketing",
|
|
2332
|
+
"preferences"
|
|
2333
|
+
]
|
|
2334
|
+
},
|
|
2335
|
+
"CookieConsentResponse": {
|
|
2336
|
+
"type": "object",
|
|
2337
|
+
"description": "Standard envelope for cookie consent endpoints. On success `success: true` and `consent` carries the current preferences; on error `success: false` and `error` carries a human-readable message.",
|
|
2338
|
+
"properties": {
|
|
2339
|
+
"success": {
|
|
2340
|
+
"type": "boolean"
|
|
2341
|
+
},
|
|
2342
|
+
"consent": {
|
|
2343
|
+
"$ref": "#/components/schemas/CookieConsent"
|
|
2344
|
+
},
|
|
2345
|
+
"error": {
|
|
2346
|
+
"type": "string"
|
|
2347
|
+
}
|
|
2348
|
+
},
|
|
2349
|
+
"required": [
|
|
2350
|
+
"success"
|
|
2351
|
+
]
|
|
2352
|
+
},
|
|
2353
|
+
"CookieExportResponse": {
|
|
2354
|
+
"type": "object",
|
|
2355
|
+
"description": "GDPR data export of a user's cookie-related data. The response is returned as a file download (Content-Disposition: attachment).",
|
|
2356
|
+
"properties": {
|
|
2357
|
+
"user": {
|
|
2358
|
+
"type": "object",
|
|
2359
|
+
"properties": {
|
|
2360
|
+
"id": {
|
|
2361
|
+
"type": "string"
|
|
2362
|
+
},
|
|
2363
|
+
"email": {
|
|
2364
|
+
"type": "string"
|
|
2365
|
+
}
|
|
2366
|
+
},
|
|
2367
|
+
"required": [
|
|
2368
|
+
"id",
|
|
2369
|
+
"email"
|
|
2370
|
+
]
|
|
2371
|
+
},
|
|
2372
|
+
"consent": {
|
|
2373
|
+
"$ref": "#/components/schemas/CookieConsent"
|
|
2374
|
+
},
|
|
2375
|
+
"exportDate": {
|
|
2376
|
+
"type": "string",
|
|
2377
|
+
"format": "date-time"
|
|
2378
|
+
},
|
|
2379
|
+
"dataRetentionPolicy": {
|
|
2380
|
+
"type": "string"
|
|
2381
|
+
}
|
|
2382
|
+
},
|
|
2383
|
+
"required": [
|
|
2384
|
+
"user",
|
|
2385
|
+
"consent",
|
|
2386
|
+
"exportDate",
|
|
2387
|
+
"dataRetentionPolicy"
|
|
2388
|
+
]
|
|
2389
|
+
},
|
|
3485
2390
|
"DirectoryEntry": {
|
|
3486
2391
|
"oneOf": [
|
|
3487
2392
|
{
|
|
@@ -3647,92 +2552,26 @@
|
|
|
3647
2552
|
{
|
|
3648
2553
|
"$ref": "#/components/schemas/TextualBody"
|
|
3649
2554
|
},
|
|
3650
|
-
{
|
|
3651
|
-
"$ref": "#/components/schemas/SpecificResource"
|
|
3652
|
-
}
|
|
3653
|
-
]
|
|
3654
|
-
},
|
|
3655
|
-
"newItem": {
|
|
3656
|
-
"oneOf": [
|
|
3657
|
-
{
|
|
3658
|
-
"$ref": "#/components/schemas/TextualBody"
|
|
3659
|
-
},
|
|
3660
|
-
{
|
|
3661
|
-
"$ref": "#/components/schemas/SpecificResource"
|
|
3662
|
-
}
|
|
3663
|
-
]
|
|
3664
|
-
}
|
|
3665
|
-
},
|
|
3666
|
-
"required": [
|
|
3667
|
-
"op",
|
|
3668
|
-
"oldItem",
|
|
3669
|
-
"newItem"
|
|
3670
|
-
]
|
|
3671
|
-
},
|
|
3672
|
-
"BodyType": {
|
|
3673
|
-
"type": "string",
|
|
3674
|
-
"enum": [
|
|
3675
|
-
"TextualBody",
|
|
3676
|
-
"SpecificResource"
|
|
3677
|
-
],
|
|
3678
|
-
"description": "Annotation body type - TextualBody for textual content, SpecificResource for resource links"
|
|
3679
|
-
},
|
|
3680
|
-
"BeckonRequest": {
|
|
3681
|
-
"type": "object",
|
|
3682
|
-
"properties": {
|
|
3683
|
-
"resourceId": {
|
|
3684
|
-
"type": "string",
|
|
3685
|
-
"description": "Resource to direct attention at"
|
|
3686
|
-
},
|
|
3687
|
-
"annotationId": {
|
|
3688
|
-
"type": "string",
|
|
3689
|
-
"description": "Specific annotation within the resource (optional)"
|
|
3690
|
-
},
|
|
3691
|
-
"message": {
|
|
3692
|
-
"type": "string",
|
|
3693
|
-
"description": "Human-readable context for the participant (max 500 chars)",
|
|
3694
|
-
"maxLength": 500
|
|
3695
|
-
}
|
|
3696
|
-
},
|
|
3697
|
-
"required": [
|
|
3698
|
-
"resourceId"
|
|
3699
|
-
]
|
|
3700
|
-
},
|
|
3701
|
-
"BeckonResponse": {
|
|
3702
|
-
"type": "object",
|
|
3703
|
-
"properties": {
|
|
3704
|
-
"participant": {
|
|
3705
|
-
"type": "string",
|
|
3706
|
-
"description": "Username or agent identifier that was beckoned"
|
|
3707
|
-
},
|
|
3708
|
-
"resourceId": {
|
|
3709
|
-
"type": "string",
|
|
3710
|
-
"description": "Resource the attention was directed at"
|
|
2555
|
+
{
|
|
2556
|
+
"$ref": "#/components/schemas/SpecificResource"
|
|
2557
|
+
}
|
|
2558
|
+
]
|
|
3711
2559
|
},
|
|
3712
|
-
"
|
|
3713
|
-
"
|
|
3714
|
-
|
|
3715
|
-
|
|
3716
|
-
|
|
3717
|
-
|
|
3718
|
-
|
|
3719
|
-
|
|
3720
|
-
|
|
3721
|
-
},
|
|
3722
|
-
"BulkAddEntityTypesRequest": {
|
|
3723
|
-
"type": "object",
|
|
3724
|
-
"properties": {
|
|
3725
|
-
"tags": {
|
|
3726
|
-
"type": "array",
|
|
3727
|
-
"items": {
|
|
3728
|
-
"type": "string",
|
|
3729
|
-
"minLength": 1,
|
|
3730
|
-
"maxLength": 100
|
|
3731
|
-
}
|
|
2560
|
+
"newItem": {
|
|
2561
|
+
"oneOf": [
|
|
2562
|
+
{
|
|
2563
|
+
"$ref": "#/components/schemas/TextualBody"
|
|
2564
|
+
},
|
|
2565
|
+
{
|
|
2566
|
+
"$ref": "#/components/schemas/SpecificResource"
|
|
2567
|
+
}
|
|
2568
|
+
]
|
|
3732
2569
|
}
|
|
3733
2570
|
},
|
|
3734
2571
|
"required": [
|
|
3735
|
-
"
|
|
2572
|
+
"op",
|
|
2573
|
+
"oldItem",
|
|
2574
|
+
"newItem"
|
|
3736
2575
|
]
|
|
3737
2576
|
},
|
|
3738
2577
|
"CloneResourceWithTokenResponse": {
|
|
@@ -3760,6 +2599,10 @@
|
|
|
3760
2599
|
"type": "object",
|
|
3761
2600
|
"description": "Error response for failed bus commands. Replaces native Error objects on the EventBus so payloads are serializable and OpenAPI-typed.",
|
|
3762
2601
|
"properties": {
|
|
2602
|
+
"correlationId": {
|
|
2603
|
+
"type": "string",
|
|
2604
|
+
"description": "Optional correlation id echoed from the originating command. When present, the failure event can be matched back to the specific command that failed."
|
|
2605
|
+
},
|
|
3763
2606
|
"message": {
|
|
3764
2607
|
"type": "string",
|
|
3765
2608
|
"description": "Human-readable error message"
|
|
@@ -3909,11 +2752,6 @@
|
|
|
3909
2752
|
},
|
|
3910
2753
|
"body": {
|
|
3911
2754
|
"oneOf": [
|
|
3912
|
-
{
|
|
3913
|
-
"type": "array",
|
|
3914
|
-
"maxItems": 0,
|
|
3915
|
-
"description": "Empty array (Phase 1 stub pattern - will be migrated to contain entity tag bodies in Phase 2)"
|
|
3916
|
-
},
|
|
3917
2755
|
{
|
|
3918
2756
|
"$ref": "#/components/schemas/AnnotationBody",
|
|
3919
2757
|
"description": "Single body (TextualBody or SpecificResource)"
|
|
@@ -3921,260 +2759,27 @@
|
|
|
3921
2759
|
{
|
|
3922
2760
|
"type": "array",
|
|
3923
2761
|
"items": {
|
|
3924
|
-
"$ref": "#/components/schemas/AnnotationBody"
|
|
3925
|
-
},
|
|
3926
|
-
"minItems": 1,
|
|
3927
|
-
"description": "
|
|
3928
|
-
}
|
|
3929
|
-
]
|
|
3930
|
-
|
|
3931
|
-
},
|
|
3932
|
-
"required": [
|
|
3933
|
-
"target",
|
|
3934
|
-
"body",
|
|
3935
|
-
"motivation"
|
|
3936
|
-
]
|
|
3937
|
-
},
|
|
3938
|
-
"CreateFromAnnotationRequest": {
|
|
3939
|
-
"type": "object",
|
|
3940
|
-
"properties": {
|
|
3941
|
-
"resourceId": {
|
|
3942
|
-
"type": "string",
|
|
3943
|
-
"description": "ID of the resource containing the annotation"
|
|
3944
|
-
},
|
|
3945
|
-
"name": {
|
|
3946
|
-
"type": "string"
|
|
3947
|
-
},
|
|
3948
|
-
"content": {
|
|
3949
|
-
"type": "string"
|
|
3950
|
-
},
|
|
3951
|
-
"format": {
|
|
3952
|
-
"$ref": "#/components/schemas/ContentFormat"
|
|
3953
|
-
}
|
|
3954
|
-
},
|
|
3955
|
-
"required": [
|
|
3956
|
-
"resourceId",
|
|
3957
|
-
"name",
|
|
3958
|
-
"content",
|
|
3959
|
-
"format"
|
|
3960
|
-
]
|
|
3961
|
-
},
|
|
3962
|
-
"CreateFromAnnotationResponse": {
|
|
3963
|
-
"type": "object",
|
|
3964
|
-
"properties": {
|
|
3965
|
-
"resource": {
|
|
3966
|
-
"$ref": "#/components/schemas/ResourceDescriptor"
|
|
3967
|
-
},
|
|
3968
|
-
"annotations": {
|
|
3969
|
-
"type": "array",
|
|
3970
|
-
"items": {
|
|
3971
|
-
"$ref": "#/components/schemas/Annotation"
|
|
3972
|
-
}
|
|
3973
|
-
}
|
|
3974
|
-
},
|
|
3975
|
-
"required": [
|
|
3976
|
-
"resource",
|
|
3977
|
-
"annotations"
|
|
3978
|
-
]
|
|
3979
|
-
},
|
|
3980
|
-
"CreateJobResponse": {
|
|
3981
|
-
"type": "object",
|
|
3982
|
-
"properties": {
|
|
3983
|
-
"jobId": {
|
|
3984
|
-
"type": "string"
|
|
3985
|
-
},
|
|
3986
|
-
"type": {
|
|
3987
|
-
"type": "string",
|
|
3988
|
-
"enum": [
|
|
3989
|
-
"reference-annotation",
|
|
3990
|
-
"generation"
|
|
3991
|
-
]
|
|
3992
|
-
},
|
|
3993
|
-
"status": {
|
|
3994
|
-
"type": "string",
|
|
3995
|
-
"enum": [
|
|
3996
|
-
"pending",
|
|
3997
|
-
"running",
|
|
3998
|
-
"complete",
|
|
3999
|
-
"failed",
|
|
4000
|
-
"cancelled"
|
|
4001
|
-
]
|
|
4002
|
-
},
|
|
4003
|
-
"created": {
|
|
4004
|
-
"type": "string"
|
|
4005
|
-
},
|
|
4006
|
-
"resourceId": {
|
|
4007
|
-
"type": "string"
|
|
4008
|
-
}
|
|
4009
|
-
},
|
|
4010
|
-
"required": [
|
|
4011
|
-
"jobId",
|
|
4012
|
-
"type",
|
|
4013
|
-
"status",
|
|
4014
|
-
"created"
|
|
4015
|
-
]
|
|
4016
|
-
},
|
|
4017
|
-
"CreateResourceFromAnnotationResponse": {
|
|
4018
|
-
"type": "object",
|
|
4019
|
-
"properties": {
|
|
4020
|
-
"resource": {
|
|
4021
|
-
"$ref": "#/components/schemas/ResourceDescriptor"
|
|
4022
|
-
},
|
|
4023
|
-
"annotation": {
|
|
4024
|
-
"$ref": "#/components/schemas/Annotation"
|
|
4025
|
-
}
|
|
4026
|
-
},
|
|
4027
|
-
"required": [
|
|
4028
|
-
"resource",
|
|
4029
|
-
"annotation"
|
|
4030
|
-
]
|
|
4031
|
-
},
|
|
4032
|
-
"CreateResourceFromSelectionRequest": {
|
|
4033
|
-
"type": "object",
|
|
4034
|
-
"properties": {
|
|
4035
|
-
"resourceId": {
|
|
4036
|
-
"type": "string",
|
|
4037
|
-
"description": "ID of the resource containing the annotation"
|
|
4038
|
-
},
|
|
4039
|
-
"content": {
|
|
4040
|
-
"type": "string"
|
|
4041
|
-
},
|
|
4042
|
-
"name": {
|
|
4043
|
-
"type": "string"
|
|
4044
|
-
},
|
|
4045
|
-
"format": {
|
|
4046
|
-
"$ref": "#/components/schemas/ContentFormat"
|
|
4047
|
-
},
|
|
4048
|
-
"entityTypes": {
|
|
4049
|
-
"type": "array",
|
|
4050
|
-
"items": {
|
|
4051
|
-
"type": "string"
|
|
4052
|
-
}
|
|
4053
|
-
},
|
|
4054
|
-
"metadata": {
|
|
4055
|
-
"type": "object",
|
|
4056
|
-
"additionalProperties": true
|
|
4057
|
-
},
|
|
4058
|
-
"prompt": {
|
|
4059
|
-
"type": "string"
|
|
4060
|
-
},
|
|
4061
|
-
"language": {
|
|
4062
|
-
"type": "string"
|
|
4063
|
-
}
|
|
4064
|
-
},
|
|
4065
|
-
"required": [
|
|
4066
|
-
"resourceId",
|
|
4067
|
-
"content",
|
|
4068
|
-
"name",
|
|
4069
|
-
"format"
|
|
4070
|
-
]
|
|
4071
|
-
},
|
|
4072
|
-
"CreateResourceFromSelectionResponse": {
|
|
4073
|
-
"type": "object",
|
|
4074
|
-
"properties": {
|
|
4075
|
-
"resource": {
|
|
4076
|
-
"$ref": "#/components/schemas/ResourceDescriptor"
|
|
4077
|
-
},
|
|
4078
|
-
"annotation": {
|
|
4079
|
-
"$ref": "#/components/schemas/Annotation"
|
|
4080
|
-
}
|
|
4081
|
-
},
|
|
4082
|
-
"required": [
|
|
4083
|
-
"resource",
|
|
4084
|
-
"annotation"
|
|
4085
|
-
]
|
|
4086
|
-
},
|
|
4087
|
-
"CreateResourceFromTokenRequest": {
|
|
4088
|
-
"type": "object",
|
|
4089
|
-
"properties": {
|
|
4090
|
-
"token": {
|
|
4091
|
-
"type": "string",
|
|
4092
|
-
"description": "Clone token"
|
|
4093
|
-
},
|
|
4094
|
-
"name": {
|
|
4095
|
-
"type": "string",
|
|
4096
|
-
"description": "Name for the new resource"
|
|
4097
|
-
},
|
|
4098
|
-
"content": {
|
|
4099
|
-
"type": "string",
|
|
4100
|
-
"description": "Content for the new resource"
|
|
4101
|
-
},
|
|
4102
|
-
"archiveOriginal": {
|
|
4103
|
-
"type": "boolean",
|
|
4104
|
-
"description": "Whether to archive the original resource"
|
|
4105
|
-
}
|
|
4106
|
-
},
|
|
4107
|
-
"required": [
|
|
4108
|
-
"token",
|
|
4109
|
-
"name",
|
|
4110
|
-
"content"
|
|
4111
|
-
]
|
|
4112
|
-
},
|
|
4113
|
-
"CreateResourceRequest": {
|
|
4114
|
-
"type": "object",
|
|
4115
|
-
"properties": {
|
|
4116
|
-
"name": {
|
|
4117
|
-
"type": "string",
|
|
4118
|
-
"minLength": 1,
|
|
4119
|
-
"maxLength": 500
|
|
4120
|
-
},
|
|
4121
|
-
"content": {
|
|
4122
|
-
"type": "string"
|
|
4123
|
-
},
|
|
4124
|
-
"format": {
|
|
4125
|
-
"$ref": "#/components/schemas/ContentFormat"
|
|
4126
|
-
},
|
|
4127
|
-
"entityTypes": {
|
|
4128
|
-
"type": "array",
|
|
4129
|
-
"items": {
|
|
4130
|
-
"type": "string"
|
|
4131
|
-
}
|
|
4132
|
-
},
|
|
4133
|
-
"language": {
|
|
4134
|
-
"type": "string"
|
|
4135
|
-
},
|
|
4136
|
-
"creationMethod": {
|
|
4137
|
-
"type": "string"
|
|
4138
|
-
},
|
|
4139
|
-
"sourceAnnotationId": {
|
|
4140
|
-
"type": "string"
|
|
4141
|
-
},
|
|
4142
|
-
"sourceResourceId": {
|
|
4143
|
-
"type": "string"
|
|
4144
|
-
}
|
|
4145
|
-
},
|
|
4146
|
-
"required": [
|
|
4147
|
-
"name",
|
|
4148
|
-
"content",
|
|
4149
|
-
"format",
|
|
4150
|
-
"entityTypes"
|
|
4151
|
-
]
|
|
4152
|
-
},
|
|
4153
|
-
"CreateResourceResponse": {
|
|
4154
|
-
"type": "object",
|
|
4155
|
-
"properties": {
|
|
4156
|
-
"resource": {
|
|
4157
|
-
"$ref": "#/components/schemas/ResourceDescriptor"
|
|
4158
|
-
},
|
|
4159
|
-
"annotations": {
|
|
4160
|
-
"type": "array",
|
|
4161
|
-
"items": {
|
|
4162
|
-
"$ref": "#/components/schemas/Annotation"
|
|
4163
|
-
}
|
|
2762
|
+
"$ref": "#/components/schemas/AnnotationBody"
|
|
2763
|
+
},
|
|
2764
|
+
"minItems": 1,
|
|
2765
|
+
"description": "Non-empty array of mixed TextualBody (tagging) and SpecificResource (linking) bodies"
|
|
2766
|
+
}
|
|
2767
|
+
],
|
|
2768
|
+
"description": "Optional body. Omit for annotations whose motivation alone is meaningful (highlighting) or whose user-supplied content is empty. Shape matches Annotation.body."
|
|
4164
2769
|
}
|
|
4165
2770
|
},
|
|
4166
2771
|
"required": [
|
|
4167
|
-
"
|
|
4168
|
-
"
|
|
2772
|
+
"target",
|
|
2773
|
+
"motivation"
|
|
4169
2774
|
]
|
|
4170
2775
|
},
|
|
4171
|
-
"
|
|
2776
|
+
"CreateResourceResponse": {
|
|
4172
2777
|
"type": "object",
|
|
2778
|
+
"description": "Response body for POST /resources (202 Accepted). Resource creation is asynchronous — the backend writes content to disk, emits yield:create on the bus, and returns the newly-minted resourceId immediately. Consumers watch SSE domain events (yield:created) to observe the fully-persisted state.",
|
|
4173
2779
|
"properties": {
|
|
4174
2780
|
"resourceId": {
|
|
4175
2781
|
"type": "string",
|
|
4176
|
-
"
|
|
4177
|
-
"description": "Resource URI containing the annotation (required for O(1) Layer 3 lookup)"
|
|
2782
|
+
"description": "The id of the newly-created resource. Assigned by Stower when it persists yield:create."
|
|
4178
2783
|
}
|
|
4179
2784
|
},
|
|
4180
2785
|
"required": [
|
|
@@ -4196,100 +2801,6 @@
|
|
|
4196
2801
|
"message"
|
|
4197
2802
|
]
|
|
4198
2803
|
},
|
|
4199
|
-
"AnnotateReferencesStreamRequest": {
|
|
4200
|
-
"type": "object",
|
|
4201
|
-
"properties": {
|
|
4202
|
-
"entityTypes": {
|
|
4203
|
-
"type": "array",
|
|
4204
|
-
"items": {
|
|
4205
|
-
"type": "string"
|
|
4206
|
-
},
|
|
4207
|
-
"description": "Entity types to annotate (e.g., 'Person', 'Organization', 'Location')"
|
|
4208
|
-
},
|
|
4209
|
-
"includeDescriptiveReferences": {
|
|
4210
|
-
"type": "boolean",
|
|
4211
|
-
"description": "Include anaphoric/cataphoric references (e.g., 'the CEO', 'the tech giant') in addition to direct mentions"
|
|
4212
|
-
}
|
|
4213
|
-
},
|
|
4214
|
-
"required": [
|
|
4215
|
-
"entityTypes"
|
|
4216
|
-
]
|
|
4217
|
-
},
|
|
4218
|
-
"GatherResourceStreamRequest": {
|
|
4219
|
-
"type": "object",
|
|
4220
|
-
"properties": {
|
|
4221
|
-
"correlationId": {
|
|
4222
|
-
"type": "string",
|
|
4223
|
-
"description": "Client-generated correlation ID to thread the response back to the originating request"
|
|
4224
|
-
},
|
|
4225
|
-
"depth": {
|
|
4226
|
-
"type": "integer",
|
|
4227
|
-
"minimum": 1,
|
|
4228
|
-
"maximum": 3,
|
|
4229
|
-
"description": "Graph traversal depth (default: 2)"
|
|
4230
|
-
},
|
|
4231
|
-
"maxResources": {
|
|
4232
|
-
"type": "integer",
|
|
4233
|
-
"minimum": 1,
|
|
4234
|
-
"maximum": 20,
|
|
4235
|
-
"description": "Maximum related resources to include (default: 10)"
|
|
4236
|
-
},
|
|
4237
|
-
"includeContent": {
|
|
4238
|
-
"type": "boolean",
|
|
4239
|
-
"description": "Include full resource content (default: true)"
|
|
4240
|
-
},
|
|
4241
|
-
"includeSummary": {
|
|
4242
|
-
"type": "boolean",
|
|
4243
|
-
"description": "Include AI-generated summary (default: false)"
|
|
4244
|
-
}
|
|
4245
|
-
}
|
|
4246
|
-
},
|
|
4247
|
-
"GatherAnnotationStreamRequest": {
|
|
4248
|
-
"type": "object",
|
|
4249
|
-
"properties": {
|
|
4250
|
-
"correlationId": {
|
|
4251
|
-
"type": "string",
|
|
4252
|
-
"description": "Client-generated correlation ID to thread the response back to the originating request"
|
|
4253
|
-
},
|
|
4254
|
-
"contextWindow": {
|
|
4255
|
-
"type": "integer",
|
|
4256
|
-
"minimum": 100,
|
|
4257
|
-
"maximum": 5000,
|
|
4258
|
-
"description": "Characters of surrounding text context (default: 1000)"
|
|
4259
|
-
}
|
|
4260
|
-
}
|
|
4261
|
-
},
|
|
4262
|
-
"BindAnnotationStreamRequest": {
|
|
4263
|
-
"type": "object",
|
|
4264
|
-
"properties": {
|
|
4265
|
-
"resourceId": {
|
|
4266
|
-
"type": "string",
|
|
4267
|
-
"description": "Resource ID containing the annotation (required for O(1) Layer 3 lookup)"
|
|
4268
|
-
},
|
|
4269
|
-
"operations": {
|
|
4270
|
-
"type": "array",
|
|
4271
|
-
"items": {
|
|
4272
|
-
"oneOf": [
|
|
4273
|
-
{
|
|
4274
|
-
"$ref": "#/components/schemas/BodyOperationAdd"
|
|
4275
|
-
},
|
|
4276
|
-
{
|
|
4277
|
-
"$ref": "#/components/schemas/BodyOperationRemove"
|
|
4278
|
-
},
|
|
4279
|
-
{
|
|
4280
|
-
"$ref": "#/components/schemas/BodyOperationReplace"
|
|
4281
|
-
}
|
|
4282
|
-
]
|
|
4283
|
-
},
|
|
4284
|
-
"minItems": 1,
|
|
4285
|
-
"description": "Array of body modification operations to apply"
|
|
4286
|
-
}
|
|
4287
|
-
},
|
|
4288
|
-
"required": [
|
|
4289
|
-
"resourceId",
|
|
4290
|
-
"operations"
|
|
4291
|
-
]
|
|
4292
|
-
},
|
|
4293
2804
|
"GatherProgress": {
|
|
4294
2805
|
"type": "object",
|
|
4295
2806
|
"description": "Progress payload emitted on gather:annotation-progress and gather:progress SSE channels during LLM context gathering.",
|
|
@@ -4344,150 +2855,6 @@
|
|
|
4344
2855
|
"response"
|
|
4345
2856
|
]
|
|
4346
2857
|
},
|
|
4347
|
-
"MarkProgress": {
|
|
4348
|
-
"type": "object",
|
|
4349
|
-
"description": "Progress state for mark (annotation) workflows. Supports both entity-type-step and percentage-based progress strategies. Emitted on mark:progress SSE channel.",
|
|
4350
|
-
"properties": {
|
|
4351
|
-
"correlationId": {
|
|
4352
|
-
"type": "string",
|
|
4353
|
-
"description": "Echoes the correlationId from the originating mark:assist-request command, if any. Lets clients match progress events back to the operation that initiated them."
|
|
4354
|
-
},
|
|
4355
|
-
"status": {
|
|
4356
|
-
"type": "string",
|
|
4357
|
-
"description": "Current status of the annotation workflow"
|
|
4358
|
-
},
|
|
4359
|
-
"message": {
|
|
4360
|
-
"type": "string",
|
|
4361
|
-
"description": "Human-readable status message"
|
|
4362
|
-
},
|
|
4363
|
-
"resourceId": {
|
|
4364
|
-
"type": "string",
|
|
4365
|
-
"description": "Resource being annotated"
|
|
4366
|
-
},
|
|
4367
|
-
"currentEntityType": {
|
|
4368
|
-
"type": "string",
|
|
4369
|
-
"description": "Reference annotation: currently scanning entity type"
|
|
4370
|
-
},
|
|
4371
|
-
"completedEntityTypes": {
|
|
4372
|
-
"type": "array",
|
|
4373
|
-
"description": "Reference annotation: completed entity types with counts",
|
|
4374
|
-
"items": {
|
|
4375
|
-
"type": "object",
|
|
4376
|
-
"properties": {
|
|
4377
|
-
"entityType": {
|
|
4378
|
-
"type": "string"
|
|
4379
|
-
},
|
|
4380
|
-
"foundCount": {
|
|
4381
|
-
"type": "integer"
|
|
4382
|
-
}
|
|
4383
|
-
},
|
|
4384
|
-
"required": [
|
|
4385
|
-
"entityType",
|
|
4386
|
-
"foundCount"
|
|
4387
|
-
]
|
|
4388
|
-
}
|
|
4389
|
-
},
|
|
4390
|
-
"percentage": {
|
|
4391
|
-
"type": "number",
|
|
4392
|
-
"minimum": 0,
|
|
4393
|
-
"maximum": 100,
|
|
4394
|
-
"description": "Percentage-based motivations (highlight, assessment, comment, tag)"
|
|
4395
|
-
},
|
|
4396
|
-
"currentCategory": {
|
|
4397
|
-
"type": "string",
|
|
4398
|
-
"description": "Category-based motivations (tag): current category"
|
|
4399
|
-
},
|
|
4400
|
-
"processedCategories": {
|
|
4401
|
-
"type": "integer",
|
|
4402
|
-
"description": "Category-based motivations (tag): number processed"
|
|
4403
|
-
},
|
|
4404
|
-
"totalCategories": {
|
|
4405
|
-
"type": "integer",
|
|
4406
|
-
"description": "Category-based motivations (tag): total categories"
|
|
4407
|
-
},
|
|
4408
|
-
"requestParams": {
|
|
4409
|
-
"type": "array",
|
|
4410
|
-
"description": "Request parameters for display in progress UI",
|
|
4411
|
-
"items": {
|
|
4412
|
-
"type": "object",
|
|
4413
|
-
"properties": {
|
|
4414
|
-
"label": {
|
|
4415
|
-
"type": "string"
|
|
4416
|
-
},
|
|
4417
|
-
"value": {
|
|
4418
|
-
"type": "string"
|
|
4419
|
-
}
|
|
4420
|
-
},
|
|
4421
|
-
"required": [
|
|
4422
|
-
"label",
|
|
4423
|
-
"value"
|
|
4424
|
-
]
|
|
4425
|
-
}
|
|
4426
|
-
}
|
|
4427
|
-
},
|
|
4428
|
-
"required": [
|
|
4429
|
-
"status"
|
|
4430
|
-
]
|
|
4431
|
-
},
|
|
4432
|
-
"MarkAssistFinished": {
|
|
4433
|
-
"type": "object",
|
|
4434
|
-
"description": "Completion payload emitted on mark:assist-finished SSE channel when AI-assisted annotation completes.",
|
|
4435
|
-
"properties": {
|
|
4436
|
-
"correlationId": {
|
|
4437
|
-
"type": "string",
|
|
4438
|
-
"description": "Echoes the correlationId from the originating mark:assist-request command, if any."
|
|
4439
|
-
},
|
|
4440
|
-
"motivation": {
|
|
4441
|
-
"$ref": "#/components/schemas/Motivation"
|
|
4442
|
-
},
|
|
4443
|
-
"resourceId": {
|
|
4444
|
-
"type": "string"
|
|
4445
|
-
},
|
|
4446
|
-
"status": {
|
|
4447
|
-
"type": "string"
|
|
4448
|
-
},
|
|
4449
|
-
"percentage": {
|
|
4450
|
-
"type": "number"
|
|
4451
|
-
},
|
|
4452
|
-
"foundCount": {
|
|
4453
|
-
"type": "integer",
|
|
4454
|
-
"description": "Number of annotations found/created"
|
|
4455
|
-
},
|
|
4456
|
-
"createdCount": {
|
|
4457
|
-
"type": "integer",
|
|
4458
|
-
"description": "Number of annotations actually created"
|
|
4459
|
-
},
|
|
4460
|
-
"byCategory": {
|
|
4461
|
-
"type": "object",
|
|
4462
|
-
"description": "Counts by category (for tag annotations)",
|
|
4463
|
-
"additionalProperties": {
|
|
4464
|
-
"type": "integer"
|
|
4465
|
-
}
|
|
4466
|
-
},
|
|
4467
|
-
"message": {
|
|
4468
|
-
"type": "string"
|
|
4469
|
-
},
|
|
4470
|
-
"progress": {
|
|
4471
|
-
"$ref": "#/components/schemas/MarkProgress"
|
|
4472
|
-
}
|
|
4473
|
-
}
|
|
4474
|
-
},
|
|
4475
|
-
"MarkAssistFailed": {
|
|
4476
|
-
"type": "object",
|
|
4477
|
-
"description": "Error payload emitted on mark:assist-failed SSE channel when AI-assisted annotation fails.",
|
|
4478
|
-
"properties": {
|
|
4479
|
-
"correlationId": {
|
|
4480
|
-
"type": "string",
|
|
4481
|
-
"description": "Echoes the correlationId from the originating mark:assist-request command, if any."
|
|
4482
|
-
},
|
|
4483
|
-
"resourceId": {
|
|
4484
|
-
"type": "string"
|
|
4485
|
-
},
|
|
4486
|
-
"message": {
|
|
4487
|
-
"type": "string"
|
|
4488
|
-
}
|
|
4489
|
-
}
|
|
4490
|
-
},
|
|
4491
2858
|
"MatchSearchResult": {
|
|
4492
2859
|
"type": "object",
|
|
4493
2860
|
"description": "Search results payload emitted on match:search-results SSE channel.",
|
|
@@ -4523,108 +2890,30 @@
|
|
|
4523
2890
|
}
|
|
4524
2891
|
},
|
|
4525
2892
|
"required": [
|
|
4526
|
-
"correlationId",
|
|
4527
|
-
"referenceId",
|
|
4528
|
-
"response"
|
|
4529
|
-
]
|
|
4530
|
-
},
|
|
4531
|
-
"MatchSearchFailed": {
|
|
4532
|
-
"type": "object",
|
|
4533
|
-
"description": "Error payload emitted on match:search-failed SSE channel.",
|
|
4534
|
-
"properties": {
|
|
4535
|
-
"correlationId": {
|
|
4536
|
-
"type": "string"
|
|
4537
|
-
},
|
|
4538
|
-
"referenceId": {
|
|
4539
|
-
"type": "string"
|
|
4540
|
-
},
|
|
4541
|
-
"error": {
|
|
4542
|
-
"type": "string"
|
|
4543
|
-
}
|
|
4544
|
-
},
|
|
4545
|
-
"required": [
|
|
4546
|
-
"correlationId",
|
|
4547
|
-
"referenceId",
|
|
4548
|
-
"error"
|
|
4549
|
-
]
|
|
4550
|
-
},
|
|
4551
|
-
"YieldProgress": {
|
|
4552
|
-
"type": "object",
|
|
4553
|
-
"description": "Progress state for resource yield (generation) workflow. Emitted as SSE events on yield:progress and yield:finished channels.",
|
|
4554
|
-
"properties": {
|
|
4555
|
-
"correlationId": {
|
|
4556
|
-
"type": "string",
|
|
4557
|
-
"description": "Echoes the correlationId from the originating yield:request command, if any. Lets clients match progress events back to the operation that initiated them."
|
|
4558
|
-
},
|
|
4559
|
-
"status": {
|
|
4560
|
-
"type": "string",
|
|
4561
|
-
"enum": [
|
|
4562
|
-
"started",
|
|
4563
|
-
"fetching",
|
|
4564
|
-
"generating",
|
|
4565
|
-
"creating",
|
|
4566
|
-
"complete",
|
|
4567
|
-
"error"
|
|
4568
|
-
]
|
|
4569
|
-
},
|
|
4570
|
-
"referenceId": {
|
|
4571
|
-
"type": "string",
|
|
4572
|
-
"description": "ID of the reference annotation that triggered generation"
|
|
4573
|
-
},
|
|
4574
|
-
"resourceName": {
|
|
4575
|
-
"type": "string",
|
|
4576
|
-
"description": "Name of the resource being generated"
|
|
4577
|
-
},
|
|
4578
|
-
"resourceId": {
|
|
4579
|
-
"type": "string",
|
|
4580
|
-
"description": "ID of the generated resource (available after creation)"
|
|
4581
|
-
},
|
|
4582
|
-
"sourceResourceId": {
|
|
4583
|
-
"type": "string",
|
|
4584
|
-
"description": "ID of the source resource containing the reference"
|
|
4585
|
-
},
|
|
4586
|
-
"percentage": {
|
|
4587
|
-
"type": "number",
|
|
4588
|
-
"minimum": 0,
|
|
4589
|
-
"maximum": 100,
|
|
4590
|
-
"description": "Progress percentage (0-100)"
|
|
4591
|
-
},
|
|
4592
|
-
"message": {
|
|
4593
|
-
"type": "string",
|
|
4594
|
-
"description": "Human-readable status message"
|
|
4595
|
-
}
|
|
4596
|
-
},
|
|
4597
|
-
"required": [
|
|
4598
|
-
"status",
|
|
2893
|
+
"correlationId",
|
|
4599
2894
|
"referenceId",
|
|
4600
|
-
"
|
|
2895
|
+
"response"
|
|
4601
2896
|
]
|
|
4602
2897
|
},
|
|
4603
|
-
"
|
|
2898
|
+
"MatchSearchFailed": {
|
|
4604
2899
|
"type": "object",
|
|
4605
|
-
"description": "Error payload emitted on
|
|
2900
|
+
"description": "Error payload emitted on match:search-failed SSE channel.",
|
|
4606
2901
|
"properties": {
|
|
4607
2902
|
"correlationId": {
|
|
4608
|
-
"type": "string",
|
|
4609
|
-
"description": "Echoes the correlationId from the originating yield:request command, if any."
|
|
4610
|
-
},
|
|
4611
|
-
"error": {
|
|
4612
|
-
"type": "string",
|
|
4613
|
-
"description": "Error message"
|
|
4614
|
-
},
|
|
4615
|
-
"status": {
|
|
4616
2903
|
"type": "string"
|
|
4617
2904
|
},
|
|
4618
2905
|
"referenceId": {
|
|
4619
2906
|
"type": "string"
|
|
4620
2907
|
},
|
|
4621
|
-
"
|
|
4622
|
-
"type": "number"
|
|
4623
|
-
},
|
|
4624
|
-
"message": {
|
|
2908
|
+
"error": {
|
|
4625
2909
|
"type": "string"
|
|
4626
2910
|
}
|
|
4627
|
-
}
|
|
2911
|
+
},
|
|
2912
|
+
"required": [
|
|
2913
|
+
"correlationId",
|
|
2914
|
+
"referenceId",
|
|
2915
|
+
"error"
|
|
2916
|
+
]
|
|
4628
2917
|
},
|
|
4629
2918
|
"EventMetadata": {
|
|
4630
2919
|
"type": "object",
|
|
@@ -5065,6 +3354,10 @@
|
|
|
5065
3354
|
"jobType": {
|
|
5066
3355
|
"$ref": "#/components/schemas/JobType"
|
|
5067
3356
|
},
|
|
3357
|
+
"annotationId": {
|
|
3358
|
+
"type": "string",
|
|
3359
|
+
"description": "Annotation this job is attached to, when applicable"
|
|
3360
|
+
},
|
|
5068
3361
|
"totalSteps": {
|
|
5069
3362
|
"type": "integer"
|
|
5070
3363
|
}
|
|
@@ -5128,6 +3421,10 @@
|
|
|
5128
3421
|
"jobType": {
|
|
5129
3422
|
"$ref": "#/components/schemas/JobType"
|
|
5130
3423
|
},
|
|
3424
|
+
"annotationId": {
|
|
3425
|
+
"type": "string",
|
|
3426
|
+
"description": "Annotation this job was attached to, when applicable"
|
|
3427
|
+
},
|
|
5131
3428
|
"totalSteps": {
|
|
5132
3429
|
"type": "integer"
|
|
5133
3430
|
},
|
|
@@ -5167,6 +3464,10 @@
|
|
|
5167
3464
|
"jobType": {
|
|
5168
3465
|
"$ref": "#/components/schemas/JobType"
|
|
5169
3466
|
},
|
|
3467
|
+
"annotationId": {
|
|
3468
|
+
"type": "string",
|
|
3469
|
+
"description": "Annotation this job was attached to, when applicable"
|
|
3470
|
+
},
|
|
5170
3471
|
"error": {
|
|
5171
3472
|
"type": "string"
|
|
5172
3473
|
},
|
|
@@ -5180,99 +3481,6 @@
|
|
|
5180
3481
|
"error"
|
|
5181
3482
|
]
|
|
5182
3483
|
},
|
|
5183
|
-
"AnnotateHighlightsStreamRequest": {
|
|
5184
|
-
"type": "object",
|
|
5185
|
-
"properties": {
|
|
5186
|
-
"instructions": {
|
|
5187
|
-
"type": "string",
|
|
5188
|
-
"description": "Optional instructions to guide AI highlight annotation"
|
|
5189
|
-
},
|
|
5190
|
-
"density": {
|
|
5191
|
-
"type": "number",
|
|
5192
|
-
"minimum": 1,
|
|
5193
|
-
"maximum": 15,
|
|
5194
|
-
"description": "Optional density: desired number of highlights per 2000 words of text (1-15)"
|
|
5195
|
-
}
|
|
5196
|
-
}
|
|
5197
|
-
},
|
|
5198
|
-
"AnnotateAssessmentsStreamRequest": {
|
|
5199
|
-
"type": "object",
|
|
5200
|
-
"properties": {
|
|
5201
|
-
"instructions": {
|
|
5202
|
-
"type": "string",
|
|
5203
|
-
"description": "Optional instructions to guide AI assessment annotation"
|
|
5204
|
-
},
|
|
5205
|
-
"tone": {
|
|
5206
|
-
"type": "string",
|
|
5207
|
-
"enum": [
|
|
5208
|
-
"analytical",
|
|
5209
|
-
"critical",
|
|
5210
|
-
"balanced",
|
|
5211
|
-
"constructive"
|
|
5212
|
-
],
|
|
5213
|
-
"description": "Optional tone/style for generated assessments"
|
|
5214
|
-
},
|
|
5215
|
-
"density": {
|
|
5216
|
-
"type": "number",
|
|
5217
|
-
"minimum": 1,
|
|
5218
|
-
"maximum": 10,
|
|
5219
|
-
"description": "Optional density: desired number of assessments per 2000 words of text (1-10)"
|
|
5220
|
-
},
|
|
5221
|
-
"language": {
|
|
5222
|
-
"type": "string",
|
|
5223
|
-
"description": "BCP 47 language tag for the generated assessment text (e.g. \"en\", \"fr\", \"de\")"
|
|
5224
|
-
}
|
|
5225
|
-
}
|
|
5226
|
-
},
|
|
5227
|
-
"AnnotateCommentsStreamRequest": {
|
|
5228
|
-
"type": "object",
|
|
5229
|
-
"properties": {
|
|
5230
|
-
"instructions": {
|
|
5231
|
-
"type": "string",
|
|
5232
|
-
"description": "Optional instructions to guide AI comment annotation"
|
|
5233
|
-
},
|
|
5234
|
-
"tone": {
|
|
5235
|
-
"type": "string",
|
|
5236
|
-
"enum": [
|
|
5237
|
-
"scholarly",
|
|
5238
|
-
"explanatory",
|
|
5239
|
-
"conversational",
|
|
5240
|
-
"technical"
|
|
5241
|
-
],
|
|
5242
|
-
"description": "Optional tone/style for generated comments"
|
|
5243
|
-
},
|
|
5244
|
-
"density": {
|
|
5245
|
-
"type": "number",
|
|
5246
|
-
"minimum": 2,
|
|
5247
|
-
"maximum": 12,
|
|
5248
|
-
"description": "Optional density: desired number of comments per 2000 words of text (2-12)"
|
|
5249
|
-
},
|
|
5250
|
-
"language": {
|
|
5251
|
-
"type": "string",
|
|
5252
|
-
"description": "BCP 47 language tag for the generated comment text (e.g. 'en', 'fr', 'de')"
|
|
5253
|
-
}
|
|
5254
|
-
}
|
|
5255
|
-
},
|
|
5256
|
-
"AnnotateTagsStreamRequest": {
|
|
5257
|
-
"type": "object",
|
|
5258
|
-
"properties": {
|
|
5259
|
-
"schemaId": {
|
|
5260
|
-
"type": "string",
|
|
5261
|
-
"description": "Tag schema ID (e.g., 'legal-irac', 'scientific-imrad', 'argument-toulmin')"
|
|
5262
|
-
},
|
|
5263
|
-
"categories": {
|
|
5264
|
-
"type": "array",
|
|
5265
|
-
"items": {
|
|
5266
|
-
"type": "string"
|
|
5267
|
-
},
|
|
5268
|
-
"description": "Categories to annotate from the selected schema (e.g., ['Issue', 'Rule', 'Application', 'Conclusion'])"
|
|
5269
|
-
}
|
|
5270
|
-
},
|
|
5271
|
-
"required": [
|
|
5272
|
-
"schemaId",
|
|
5273
|
-
"categories"
|
|
5274
|
-
]
|
|
5275
|
-
},
|
|
5276
3484
|
"ErrorResponse": {
|
|
5277
3485
|
"type": "object",
|
|
5278
3486
|
"properties": {
|
|
@@ -5306,114 +3514,6 @@
|
|
|
5306
3514
|
"data"
|
|
5307
3515
|
]
|
|
5308
3516
|
},
|
|
5309
|
-
"YieldResourceFromAnnotationRequest": {
|
|
5310
|
-
"type": "object",
|
|
5311
|
-
"properties": {
|
|
5312
|
-
"name": {
|
|
5313
|
-
"type": "string",
|
|
5314
|
-
"description": "Optional name for the generated resource"
|
|
5315
|
-
},
|
|
5316
|
-
"entityTypes": {
|
|
5317
|
-
"type": "array",
|
|
5318
|
-
"items": {
|
|
5319
|
-
"type": "string"
|
|
5320
|
-
},
|
|
5321
|
-
"description": "Entity types for the generated resource"
|
|
5322
|
-
},
|
|
5323
|
-
"prompt": {
|
|
5324
|
-
"type": "string",
|
|
5325
|
-
"description": "Optional AI prompt for generation"
|
|
5326
|
-
},
|
|
5327
|
-
"language": {
|
|
5328
|
-
"type": "string",
|
|
5329
|
-
"description": "Language code (e.g., 'en', 'es')"
|
|
5330
|
-
}
|
|
5331
|
-
}
|
|
5332
|
-
},
|
|
5333
|
-
"YieldResourceFromAnnotationResponse": {
|
|
5334
|
-
"type": "object",
|
|
5335
|
-
"properties": {
|
|
5336
|
-
"resource": {
|
|
5337
|
-
"$ref": "#/components/schemas/ResourceDescriptor"
|
|
5338
|
-
},
|
|
5339
|
-
"annotation": {
|
|
5340
|
-
"$ref": "#/components/schemas/Annotation"
|
|
5341
|
-
},
|
|
5342
|
-
"generated": {
|
|
5343
|
-
"type": "boolean"
|
|
5344
|
-
}
|
|
5345
|
-
},
|
|
5346
|
-
"required": [
|
|
5347
|
-
"resource",
|
|
5348
|
-
"annotation",
|
|
5349
|
-
"generated"
|
|
5350
|
-
]
|
|
5351
|
-
},
|
|
5352
|
-
"YieldResourceRequest": {
|
|
5353
|
-
"type": "object",
|
|
5354
|
-
"properties": {
|
|
5355
|
-
"resourceId": {
|
|
5356
|
-
"type": "string",
|
|
5357
|
-
"description": "Resource ID containing the annotation"
|
|
5358
|
-
},
|
|
5359
|
-
"title": {
|
|
5360
|
-
"type": "string",
|
|
5361
|
-
"description": "Custom title for generated resource"
|
|
5362
|
-
},
|
|
5363
|
-
"prompt": {
|
|
5364
|
-
"type": "string",
|
|
5365
|
-
"description": "Custom prompt for content generation"
|
|
5366
|
-
},
|
|
5367
|
-
"language": {
|
|
5368
|
-
"type": "string",
|
|
5369
|
-
"description": "Language locale (e.g., \"es\", \"fr\", \"ja\")"
|
|
5370
|
-
}
|
|
5371
|
-
},
|
|
5372
|
-
"required": [
|
|
5373
|
-
"resourceId"
|
|
5374
|
-
]
|
|
5375
|
-
},
|
|
5376
|
-
"YieldResourceStreamRequest": {
|
|
5377
|
-
"type": "object",
|
|
5378
|
-
"properties": {
|
|
5379
|
-
"title": {
|
|
5380
|
-
"type": "string",
|
|
5381
|
-
"description": "Custom title for generated resource"
|
|
5382
|
-
},
|
|
5383
|
-
"prompt": {
|
|
5384
|
-
"type": "string",
|
|
5385
|
-
"description": "Custom prompt for content generation"
|
|
5386
|
-
},
|
|
5387
|
-
"language": {
|
|
5388
|
-
"type": "string",
|
|
5389
|
-
"description": "Language locale for generated content (e.g., \"es\", \"fr\", \"ja\")"
|
|
5390
|
-
},
|
|
5391
|
-
"context": {
|
|
5392
|
-
"$ref": "#/components/schemas/GatheredContext",
|
|
5393
|
-
"description": "Gathered context including source document excerpts, metadata, and graph context"
|
|
5394
|
-
},
|
|
5395
|
-
"temperature": {
|
|
5396
|
-
"type": "number",
|
|
5397
|
-
"minimum": 0,
|
|
5398
|
-
"maximum": 1,
|
|
5399
|
-
"description": "Inference temperature (0.0 = focused, 1.0 = creative)"
|
|
5400
|
-
},
|
|
5401
|
-
"maxTokens": {
|
|
5402
|
-
"type": "number",
|
|
5403
|
-
"minimum": 100,
|
|
5404
|
-
"maximum": 4000,
|
|
5405
|
-
"description": "Maximum tokens to generate"
|
|
5406
|
-
},
|
|
5407
|
-
"storageUri": {
|
|
5408
|
-
"type": "string",
|
|
5409
|
-
"description": "file://-relative URI where the generated resource will be saved (e.g. file://generated/overview.md)"
|
|
5410
|
-
}
|
|
5411
|
-
},
|
|
5412
|
-
"required": [
|
|
5413
|
-
"context",
|
|
5414
|
-
"storageUri"
|
|
5415
|
-
]
|
|
5416
|
-
},
|
|
5417
3517
|
"GetAnnotationHistoryResponse": {
|
|
5418
3518
|
"type": "object",
|
|
5419
3519
|
"properties": {
|
|
@@ -5730,32 +3830,6 @@
|
|
|
5730
3830
|
"created"
|
|
5731
3831
|
]
|
|
5732
3832
|
},
|
|
5733
|
-
"ListAnnotationsResponse": {
|
|
5734
|
-
"type": "object",
|
|
5735
|
-
"properties": {
|
|
5736
|
-
"annotations": {
|
|
5737
|
-
"type": "array",
|
|
5738
|
-
"items": {
|
|
5739
|
-
"$ref": "#/components/schemas/Annotation"
|
|
5740
|
-
}
|
|
5741
|
-
},
|
|
5742
|
-
"total": {
|
|
5743
|
-
"type": "number"
|
|
5744
|
-
},
|
|
5745
|
-
"offset": {
|
|
5746
|
-
"type": "number"
|
|
5747
|
-
},
|
|
5748
|
-
"limit": {
|
|
5749
|
-
"type": "number"
|
|
5750
|
-
}
|
|
5751
|
-
},
|
|
5752
|
-
"required": [
|
|
5753
|
-
"annotations",
|
|
5754
|
-
"total",
|
|
5755
|
-
"offset",
|
|
5756
|
-
"limit"
|
|
5757
|
-
]
|
|
5758
|
-
},
|
|
5759
3833
|
"ListResourcesResponse": {
|
|
5760
3834
|
"type": "object",
|
|
5761
3835
|
"properties": {
|
|
@@ -5975,37 +4049,6 @@
|
|
|
5975
4049
|
}
|
|
5976
4050
|
}
|
|
5977
4051
|
},
|
|
5978
|
-
"BindAnnotationRequest": {
|
|
5979
|
-
"type": "object",
|
|
5980
|
-
"properties": {
|
|
5981
|
-
"resourceId": {
|
|
5982
|
-
"type": "string",
|
|
5983
|
-
"description": "Target resource ID to resolve reference to"
|
|
5984
|
-
}
|
|
5985
|
-
},
|
|
5986
|
-
"required": [
|
|
5987
|
-
"resourceId"
|
|
5988
|
-
]
|
|
5989
|
-
},
|
|
5990
|
-
"BindAnnotationResponse": {
|
|
5991
|
-
"type": "object",
|
|
5992
|
-
"properties": {
|
|
5993
|
-
"annotation": {
|
|
5994
|
-
"$ref": "#/components/schemas/Annotation"
|
|
5995
|
-
},
|
|
5996
|
-
"targetResource": {
|
|
5997
|
-
"nullable": true,
|
|
5998
|
-
"allOf": [
|
|
5999
|
-
{
|
|
6000
|
-
"$ref": "#/components/schemas/ResourceDescriptor"
|
|
6001
|
-
}
|
|
6002
|
-
]
|
|
6003
|
-
}
|
|
6004
|
-
},
|
|
6005
|
-
"required": [
|
|
6006
|
-
"annotation"
|
|
6007
|
-
]
|
|
6008
|
-
},
|
|
6009
4052
|
"ResourceDescriptor": {
|
|
6010
4053
|
"type": "object",
|
|
6011
4054
|
"description": "Metadata about a resource (1:1 with its URI). JSON-LD subject is @id. Link to concrete bytes via representations.",
|
|
@@ -6632,20 +4675,6 @@
|
|
|
6632
4675
|
"operations"
|
|
6633
4676
|
]
|
|
6634
4677
|
},
|
|
6635
|
-
"UpdateResourceRequest": {
|
|
6636
|
-
"type": "object",
|
|
6637
|
-
"properties": {
|
|
6638
|
-
"entityTypes": {
|
|
6639
|
-
"type": "array",
|
|
6640
|
-
"items": {
|
|
6641
|
-
"type": "string"
|
|
6642
|
-
}
|
|
6643
|
-
},
|
|
6644
|
-
"archived": {
|
|
6645
|
-
"type": "boolean"
|
|
6646
|
-
}
|
|
6647
|
-
}
|
|
6648
|
-
},
|
|
6649
4678
|
"UpdateUserRequest": {
|
|
6650
4679
|
"type": "object",
|
|
6651
4680
|
"properties": {
|
|
@@ -6827,14 +4856,19 @@
|
|
|
6827
4856
|
},
|
|
6828
4857
|
"BindBodyUpdated": {
|
|
6829
4858
|
"type": "object",
|
|
6830
|
-
"description": "
|
|
4859
|
+
"description": "Success result emitted on the bind:body-updated bus channel after bind:update-body has been applied.",
|
|
6831
4860
|
"properties": {
|
|
4861
|
+
"correlationId": {
|
|
4862
|
+
"type": "string",
|
|
4863
|
+
"description": "Correlation ID echoed from the originating bind:update-body command"
|
|
4864
|
+
},
|
|
6832
4865
|
"annotationId": {
|
|
6833
4866
|
"type": "string",
|
|
6834
4867
|
"description": "Branded AnnotationId of the annotation whose body was updated"
|
|
6835
4868
|
}
|
|
6836
4869
|
},
|
|
6837
4870
|
"required": [
|
|
4871
|
+
"correlationId",
|
|
6838
4872
|
"annotationId"
|
|
6839
4873
|
]
|
|
6840
4874
|
},
|
|
@@ -6873,6 +4907,10 @@
|
|
|
6873
4907
|
"type": "object",
|
|
6874
4908
|
"description": "Command payload sent on the bind:update-body bus channel to modify annotation bodies.",
|
|
6875
4909
|
"properties": {
|
|
4910
|
+
"_userId": {
|
|
4911
|
+
"type": "string",
|
|
4912
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
4913
|
+
},
|
|
6876
4914
|
"correlationId": {
|
|
6877
4915
|
"type": "string",
|
|
6878
4916
|
"description": "Client-supplied id used to match this command to its result event(s) on the events-stream. Generated by the route handler if absent."
|
|
@@ -6885,10 +4923,6 @@
|
|
|
6885
4923
|
"type": "string",
|
|
6886
4924
|
"description": "Branded ResourceId of the resource the annotation belongs to"
|
|
6887
4925
|
},
|
|
6888
|
-
"userId": {
|
|
6889
|
-
"type": "string",
|
|
6890
|
-
"description": "Branded UserId of the user performing the update"
|
|
6891
|
-
},
|
|
6892
4926
|
"operations": {
|
|
6893
4927
|
"type": "array",
|
|
6894
4928
|
"items": {
|
|
@@ -7018,7 +5052,37 @@
|
|
|
7018
5052
|
},
|
|
7019
5053
|
"required": [
|
|
7020
5054
|
"correlationId",
|
|
7021
|
-
"response"
|
|
5055
|
+
"response"
|
|
5056
|
+
]
|
|
5057
|
+
},
|
|
5058
|
+
"BrowseAnnotationContextRequest": {
|
|
5059
|
+
"type": "object",
|
|
5060
|
+
"description": "Request to get contextual text around an annotation",
|
|
5061
|
+
"properties": {
|
|
5062
|
+
"correlationId": {
|
|
5063
|
+
"type": "string"
|
|
5064
|
+
},
|
|
5065
|
+
"annotationId": {
|
|
5066
|
+
"type": "string"
|
|
5067
|
+
},
|
|
5068
|
+
"resourceId": {
|
|
5069
|
+
"type": "string"
|
|
5070
|
+
},
|
|
5071
|
+
"contextBefore": {
|
|
5072
|
+
"type": "integer",
|
|
5073
|
+
"minimum": 0,
|
|
5074
|
+
"maximum": 5000
|
|
5075
|
+
},
|
|
5076
|
+
"contextAfter": {
|
|
5077
|
+
"type": "integer",
|
|
5078
|
+
"minimum": 0,
|
|
5079
|
+
"maximum": 5000
|
|
5080
|
+
}
|
|
5081
|
+
},
|
|
5082
|
+
"required": [
|
|
5083
|
+
"correlationId",
|
|
5084
|
+
"annotationId",
|
|
5085
|
+
"resourceId"
|
|
7022
5086
|
]
|
|
7023
5087
|
},
|
|
7024
5088
|
"BrowseAnnotationsRequest": {
|
|
@@ -7481,7 +5545,7 @@
|
|
|
7481
5545
|
},
|
|
7482
5546
|
"GatherAnnotationRequest": {
|
|
7483
5547
|
"type": "object",
|
|
7484
|
-
"description": "Request payload sent on the gather:
|
|
5548
|
+
"description": "Request payload sent on the gather:requested bus channel to gather context for an annotation.",
|
|
7485
5549
|
"properties": {
|
|
7486
5550
|
"correlationId": {
|
|
7487
5551
|
"type": "string",
|
|
@@ -7705,7 +5769,7 @@
|
|
|
7705
5769
|
},
|
|
7706
5770
|
"GatherResourceRequest": {
|
|
7707
5771
|
"type": "object",
|
|
7708
|
-
"description": "Request payload sent on the gather:resource-
|
|
5772
|
+
"description": "Request payload sent on the gather:resource-requested bus channel to gather context for a resource.",
|
|
7709
5773
|
"properties": {
|
|
7710
5774
|
"correlationId": {
|
|
7711
5775
|
"type": "string",
|
|
@@ -7750,6 +5814,26 @@
|
|
|
7750
5814
|
"options"
|
|
7751
5815
|
]
|
|
7752
5816
|
},
|
|
5817
|
+
"GatherSummaryRequest": {
|
|
5818
|
+
"type": "object",
|
|
5819
|
+
"description": "Request to generate an AI summary of an annotation",
|
|
5820
|
+
"properties": {
|
|
5821
|
+
"correlationId": {
|
|
5822
|
+
"type": "string"
|
|
5823
|
+
},
|
|
5824
|
+
"annotationId": {
|
|
5825
|
+
"type": "string"
|
|
5826
|
+
},
|
|
5827
|
+
"resourceId": {
|
|
5828
|
+
"type": "string"
|
|
5829
|
+
}
|
|
5830
|
+
},
|
|
5831
|
+
"required": [
|
|
5832
|
+
"correlationId",
|
|
5833
|
+
"annotationId",
|
|
5834
|
+
"resourceId"
|
|
5835
|
+
]
|
|
5836
|
+
},
|
|
7753
5837
|
"JobAssessmentAnnotationResult": {
|
|
7754
5838
|
"type": "object",
|
|
7755
5839
|
"description": "Result of a completed assessment-annotation job.",
|
|
@@ -7782,6 +5866,79 @@
|
|
|
7782
5866
|
"jobType"
|
|
7783
5867
|
]
|
|
7784
5868
|
},
|
|
5869
|
+
"JobClaimCommand": {
|
|
5870
|
+
"type": "object",
|
|
5871
|
+
"description": "Command to claim a pending job (atomic CAS: pending → running)",
|
|
5872
|
+
"properties": {
|
|
5873
|
+
"correlationId": {
|
|
5874
|
+
"type": "string"
|
|
5875
|
+
},
|
|
5876
|
+
"jobId": {
|
|
5877
|
+
"type": "string"
|
|
5878
|
+
}
|
|
5879
|
+
},
|
|
5880
|
+
"required": [
|
|
5881
|
+
"correlationId",
|
|
5882
|
+
"jobId"
|
|
5883
|
+
]
|
|
5884
|
+
},
|
|
5885
|
+
"JobCreateCommand": {
|
|
5886
|
+
"type": "object",
|
|
5887
|
+
"description": "Command to create a new job via the event bus",
|
|
5888
|
+
"properties": {
|
|
5889
|
+
"correlationId": {
|
|
5890
|
+
"type": "string"
|
|
5891
|
+
},
|
|
5892
|
+
"jobType": {
|
|
5893
|
+
"type": "string",
|
|
5894
|
+
"enum": [
|
|
5895
|
+
"reference-annotation",
|
|
5896
|
+
"highlight-annotation",
|
|
5897
|
+
"assessment-annotation",
|
|
5898
|
+
"comment-annotation",
|
|
5899
|
+
"tag-annotation",
|
|
5900
|
+
"generation"
|
|
5901
|
+
]
|
|
5902
|
+
},
|
|
5903
|
+
"resourceId": {
|
|
5904
|
+
"type": "string"
|
|
5905
|
+
},
|
|
5906
|
+
"params": {
|
|
5907
|
+
"type": "object",
|
|
5908
|
+
"additionalProperties": true
|
|
5909
|
+
}
|
|
5910
|
+
},
|
|
5911
|
+
"required": [
|
|
5912
|
+
"correlationId",
|
|
5913
|
+
"jobType",
|
|
5914
|
+
"resourceId",
|
|
5915
|
+
"params"
|
|
5916
|
+
]
|
|
5917
|
+
},
|
|
5918
|
+
"JobCreatedResult": {
|
|
5919
|
+
"type": "object",
|
|
5920
|
+
"description": "Result of a job:create command",
|
|
5921
|
+
"properties": {
|
|
5922
|
+
"correlationId": {
|
|
5923
|
+
"type": "string"
|
|
5924
|
+
},
|
|
5925
|
+
"response": {
|
|
5926
|
+
"type": "object",
|
|
5927
|
+
"properties": {
|
|
5928
|
+
"jobId": {
|
|
5929
|
+
"type": "string"
|
|
5930
|
+
}
|
|
5931
|
+
},
|
|
5932
|
+
"required": [
|
|
5933
|
+
"jobId"
|
|
5934
|
+
]
|
|
5935
|
+
}
|
|
5936
|
+
},
|
|
5937
|
+
"required": [
|
|
5938
|
+
"correlationId",
|
|
5939
|
+
"response"
|
|
5940
|
+
]
|
|
5941
|
+
},
|
|
7785
5942
|
"JobCommentAnnotationResult": {
|
|
7786
5943
|
"type": "object",
|
|
7787
5944
|
"description": "Result of a completed comment-annotation job.",
|
|
@@ -7802,10 +5959,11 @@
|
|
|
7802
5959
|
"type": "object",
|
|
7803
5960
|
"description": "Command to mark a job as complete",
|
|
7804
5961
|
"properties": {
|
|
7805
|
-
"
|
|
7806
|
-
"type": "string"
|
|
5962
|
+
"_userId": {
|
|
5963
|
+
"type": "string",
|
|
5964
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
7807
5965
|
},
|
|
7808
|
-
"
|
|
5966
|
+
"resourceId": {
|
|
7809
5967
|
"type": "string"
|
|
7810
5968
|
},
|
|
7811
5969
|
"jobId": {
|
|
@@ -7814,13 +5972,16 @@
|
|
|
7814
5972
|
"jobType": {
|
|
7815
5973
|
"$ref": "#/components/schemas/JobType"
|
|
7816
5974
|
},
|
|
5975
|
+
"annotationId": {
|
|
5976
|
+
"type": "string",
|
|
5977
|
+
"description": "Annotation this job is attached to, when applicable. Lets the UI route completion feedback (toast, resolve state) to a specific annotation."
|
|
5978
|
+
},
|
|
7817
5979
|
"result": {
|
|
7818
5980
|
"$ref": "#/components/schemas/JobResult"
|
|
7819
5981
|
}
|
|
7820
5982
|
},
|
|
7821
5983
|
"required": [
|
|
7822
5984
|
"resourceId",
|
|
7823
|
-
"userId",
|
|
7824
5985
|
"jobId",
|
|
7825
5986
|
"jobType"
|
|
7826
5987
|
]
|
|
@@ -7829,10 +5990,11 @@
|
|
|
7829
5990
|
"type": "object",
|
|
7830
5991
|
"description": "Command to mark a job as failed",
|
|
7831
5992
|
"properties": {
|
|
7832
|
-
"
|
|
7833
|
-
"type": "string"
|
|
5993
|
+
"_userId": {
|
|
5994
|
+
"type": "string",
|
|
5995
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
7834
5996
|
},
|
|
7835
|
-
"
|
|
5997
|
+
"resourceId": {
|
|
7836
5998
|
"type": "string"
|
|
7837
5999
|
},
|
|
7838
6000
|
"jobId": {
|
|
@@ -7841,13 +6003,16 @@
|
|
|
7841
6003
|
"jobType": {
|
|
7842
6004
|
"$ref": "#/components/schemas/JobType"
|
|
7843
6005
|
},
|
|
6006
|
+
"annotationId": {
|
|
6007
|
+
"type": "string",
|
|
6008
|
+
"description": "Annotation this job is attached to, when applicable. Lets the UI route failure feedback (error toast, revert state) to a specific annotation."
|
|
6009
|
+
},
|
|
7844
6010
|
"error": {
|
|
7845
6011
|
"type": "string"
|
|
7846
6012
|
}
|
|
7847
6013
|
},
|
|
7848
6014
|
"required": [
|
|
7849
6015
|
"resourceId",
|
|
7850
|
-
"userId",
|
|
7851
6016
|
"jobId",
|
|
7852
6017
|
"jobType",
|
|
7853
6018
|
"error"
|
|
@@ -7855,11 +6020,11 @@
|
|
|
7855
6020
|
},
|
|
7856
6021
|
"JobGenerationResult": {
|
|
7857
6022
|
"type": "object",
|
|
7858
|
-
"description": "Result of a completed generation job.",
|
|
6023
|
+
"description": "Result of a completed generation job. resourceId is assigned by Stower when yield:create is processed; the worker emits job:complete with only resourceName, and Stower populates resourceId on the persisted payload.",
|
|
7859
6024
|
"properties": {
|
|
7860
6025
|
"resourceId": {
|
|
7861
6026
|
"type": "string",
|
|
7862
|
-
"description": "ID of the generated resource"
|
|
6027
|
+
"description": "ID of the generated resource (populated by Stower, not by the worker)"
|
|
7863
6028
|
},
|
|
7864
6029
|
"resourceName": {
|
|
7865
6030
|
"type": "string",
|
|
@@ -7867,7 +6032,6 @@
|
|
|
7867
6032
|
}
|
|
7868
6033
|
},
|
|
7869
6034
|
"required": [
|
|
7870
|
-
"resourceId",
|
|
7871
6035
|
"resourceName"
|
|
7872
6036
|
]
|
|
7873
6037
|
},
|
|
@@ -7889,11 +6053,11 @@
|
|
|
7889
6053
|
},
|
|
7890
6054
|
"JobProgress": {
|
|
7891
6055
|
"type": "object",
|
|
7892
|
-
"description": "Progress report from a running job. Common fields are stage/percentage/message; job-type-specific fields may also be present.",
|
|
6056
|
+
"description": "Progress report from a running job. Common fields are stage/percentage/message; job-type-specific fields may also be present. This is the single progress shape for every job type — annotation workers and generation alike.",
|
|
7893
6057
|
"properties": {
|
|
7894
6058
|
"stage": {
|
|
7895
6059
|
"type": "string",
|
|
7896
|
-
"description": "Current processing stage"
|
|
6060
|
+
"description": "Current processing stage (e.g. 'analyzing', 'creating', 'complete', 'error')"
|
|
7897
6061
|
},
|
|
7898
6062
|
"percentage": {
|
|
7899
6063
|
"type": "number",
|
|
@@ -7903,6 +6067,10 @@
|
|
|
7903
6067
|
"type": "string",
|
|
7904
6068
|
"description": "Human-readable progress message"
|
|
7905
6069
|
},
|
|
6070
|
+
"annotationId": {
|
|
6071
|
+
"type": "string",
|
|
6072
|
+
"description": "Annotation this job is attached to, when applicable. Echoed inside JobProgress (in addition to the outer command envelope) so consumers that only see the inner progress object (e.g. client.yield.fromAnnotation's Observable) can still route visual feedback to a specific annotation."
|
|
6073
|
+
},
|
|
7906
6074
|
"totalEntityTypes": {
|
|
7907
6075
|
"type": "integer",
|
|
7908
6076
|
"description": "Total entity types to process (reference-annotation)"
|
|
@@ -7923,6 +6091,25 @@
|
|
|
7923
6091
|
"type": "string",
|
|
7924
6092
|
"description": "Entity type currently being processed"
|
|
7925
6093
|
},
|
|
6094
|
+
"completedEntityTypes": {
|
|
6095
|
+
"type": "array",
|
|
6096
|
+
"description": "Reference annotation: completed entity types with per-type counts, for UI progress display",
|
|
6097
|
+
"items": {
|
|
6098
|
+
"type": "object",
|
|
6099
|
+
"properties": {
|
|
6100
|
+
"entityType": {
|
|
6101
|
+
"type": "string"
|
|
6102
|
+
},
|
|
6103
|
+
"foundCount": {
|
|
6104
|
+
"type": "integer"
|
|
6105
|
+
}
|
|
6106
|
+
},
|
|
6107
|
+
"required": [
|
|
6108
|
+
"entityType",
|
|
6109
|
+
"foundCount"
|
|
6110
|
+
]
|
|
6111
|
+
}
|
|
6112
|
+
},
|
|
7926
6113
|
"processedCategories": {
|
|
7927
6114
|
"type": "integer",
|
|
7928
6115
|
"description": "Categories processed (tag-annotation)"
|
|
@@ -7934,6 +6121,25 @@
|
|
|
7934
6121
|
"currentCategory": {
|
|
7935
6122
|
"type": "string",
|
|
7936
6123
|
"description": "Category currently being processed (tag-annotation)"
|
|
6124
|
+
},
|
|
6125
|
+
"requestParams": {
|
|
6126
|
+
"type": "array",
|
|
6127
|
+
"description": "Echoed job parameters for display in the progress UI (e.g. entity types or categories the user asked to detect)",
|
|
6128
|
+
"items": {
|
|
6129
|
+
"type": "object",
|
|
6130
|
+
"properties": {
|
|
6131
|
+
"label": {
|
|
6132
|
+
"type": "string"
|
|
6133
|
+
},
|
|
6134
|
+
"value": {
|
|
6135
|
+
"type": "string"
|
|
6136
|
+
}
|
|
6137
|
+
},
|
|
6138
|
+
"required": [
|
|
6139
|
+
"label",
|
|
6140
|
+
"value"
|
|
6141
|
+
]
|
|
6142
|
+
}
|
|
7937
6143
|
}
|
|
7938
6144
|
},
|
|
7939
6145
|
"required": [
|
|
@@ -7954,12 +6160,17 @@
|
|
|
7954
6160
|
},
|
|
7955
6161
|
"resourceId": {
|
|
7956
6162
|
"type": "string"
|
|
6163
|
+
},
|
|
6164
|
+
"userId": {
|
|
6165
|
+
"type": "string",
|
|
6166
|
+
"description": "DID of the user who initiated the job (audit)."
|
|
7957
6167
|
}
|
|
7958
6168
|
},
|
|
7959
6169
|
"required": [
|
|
7960
6170
|
"jobId",
|
|
7961
6171
|
"jobType",
|
|
7962
|
-
"resourceId"
|
|
6172
|
+
"resourceId",
|
|
6173
|
+
"userId"
|
|
7963
6174
|
]
|
|
7964
6175
|
},
|
|
7965
6176
|
"JobReferenceAnnotationResult": {
|
|
@@ -7989,10 +6200,11 @@
|
|
|
7989
6200
|
"type": "object",
|
|
7990
6201
|
"description": "Command to report progress on a job",
|
|
7991
6202
|
"properties": {
|
|
7992
|
-
"
|
|
7993
|
-
"type": "string"
|
|
6203
|
+
"_userId": {
|
|
6204
|
+
"type": "string",
|
|
6205
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
7994
6206
|
},
|
|
7995
|
-
"
|
|
6207
|
+
"resourceId": {
|
|
7996
6208
|
"type": "string"
|
|
7997
6209
|
},
|
|
7998
6210
|
"jobId": {
|
|
@@ -8001,6 +6213,10 @@
|
|
|
8001
6213
|
"jobType": {
|
|
8002
6214
|
"$ref": "#/components/schemas/JobType"
|
|
8003
6215
|
},
|
|
6216
|
+
"annotationId": {
|
|
6217
|
+
"type": "string",
|
|
6218
|
+
"description": "Annotation this job is attached to, when applicable. Lets the UI attach progress visuals to a specific annotation (e.g. a reference whose generation is running)."
|
|
6219
|
+
},
|
|
8004
6220
|
"percentage": {
|
|
8005
6221
|
"type": "number"
|
|
8006
6222
|
},
|
|
@@ -8010,7 +6226,6 @@
|
|
|
8010
6226
|
},
|
|
8011
6227
|
"required": [
|
|
8012
6228
|
"resourceId",
|
|
8013
|
-
"userId",
|
|
8014
6229
|
"jobId",
|
|
8015
6230
|
"jobType",
|
|
8016
6231
|
"percentage"
|
|
@@ -8043,10 +6258,11 @@
|
|
|
8043
6258
|
"type": "object",
|
|
8044
6259
|
"description": "Command to start a job",
|
|
8045
6260
|
"properties": {
|
|
8046
|
-
"
|
|
8047
|
-
"type": "string"
|
|
6261
|
+
"_userId": {
|
|
6262
|
+
"type": "string",
|
|
6263
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
8048
6264
|
},
|
|
8049
|
-
"
|
|
6265
|
+
"resourceId": {
|
|
8050
6266
|
"type": "string"
|
|
8051
6267
|
},
|
|
8052
6268
|
"jobId": {
|
|
@@ -8054,11 +6270,14 @@
|
|
|
8054
6270
|
},
|
|
8055
6271
|
"jobType": {
|
|
8056
6272
|
"$ref": "#/components/schemas/JobType"
|
|
6273
|
+
},
|
|
6274
|
+
"annotationId": {
|
|
6275
|
+
"type": "string",
|
|
6276
|
+
"description": "Annotation this job is attached to, when applicable. Set for annotation-scoped jobs like generation (from a specific reference). Unset for resource-scoped jobs like bulk reference/tag/highlight detection."
|
|
8057
6277
|
}
|
|
8058
6278
|
},
|
|
8059
6279
|
"required": [
|
|
8060
6280
|
"resourceId",
|
|
8061
|
-
"userId",
|
|
8062
6281
|
"jobId",
|
|
8063
6282
|
"jobType"
|
|
8064
6283
|
]
|
|
@@ -8126,21 +6345,22 @@
|
|
|
8126
6345
|
"tag": {
|
|
8127
6346
|
"type": "string"
|
|
8128
6347
|
},
|
|
8129
|
-
"
|
|
8130
|
-
"type": "string"
|
|
6348
|
+
"_userId": {
|
|
6349
|
+
"type": "string",
|
|
6350
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
8131
6351
|
}
|
|
8132
6352
|
},
|
|
8133
6353
|
"required": [
|
|
8134
|
-
"tag"
|
|
8135
|
-
"userId"
|
|
6354
|
+
"tag"
|
|
8136
6355
|
]
|
|
8137
6356
|
},
|
|
8138
6357
|
"MarkArchiveCommand": {
|
|
8139
6358
|
"type": "object",
|
|
8140
6359
|
"description": "Bus command to archive a resource and optionally remove its file.",
|
|
8141
6360
|
"properties": {
|
|
8142
|
-
"
|
|
8143
|
-
"type": "string"
|
|
6361
|
+
"_userId": {
|
|
6362
|
+
"type": "string",
|
|
6363
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
8144
6364
|
},
|
|
8145
6365
|
"resourceId": {
|
|
8146
6366
|
"type": "string"
|
|
@@ -8237,19 +6457,23 @@
|
|
|
8237
6457
|
"type": "object",
|
|
8238
6458
|
"description": "Bus command to create an annotation on a resource.",
|
|
8239
6459
|
"properties": {
|
|
6460
|
+
"_userId": {
|
|
6461
|
+
"type": "string",
|
|
6462
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
6463
|
+
},
|
|
6464
|
+
"correlationId": {
|
|
6465
|
+
"type": "string",
|
|
6466
|
+
"description": "Optional correlation id threaded from the originating mark:create-request. Propagated into event metadata by Stower so annotation-assembly can emit mark:create-ok after persistence completes."
|
|
6467
|
+
},
|
|
8240
6468
|
"annotation": {
|
|
8241
6469
|
"$ref": "#/components/schemas/Annotation"
|
|
8242
6470
|
},
|
|
8243
|
-
"userId": {
|
|
8244
|
-
"type": "string"
|
|
8245
|
-
},
|
|
8246
6471
|
"resourceId": {
|
|
8247
6472
|
"type": "string"
|
|
8248
6473
|
}
|
|
8249
6474
|
},
|
|
8250
6475
|
"required": [
|
|
8251
6476
|
"annotation",
|
|
8252
|
-
"userId",
|
|
8253
6477
|
"resourceId"
|
|
8254
6478
|
]
|
|
8255
6479
|
},
|
|
@@ -8265,14 +6489,35 @@
|
|
|
8265
6489
|
"annotationId"
|
|
8266
6490
|
]
|
|
8267
6491
|
},
|
|
6492
|
+
"MarkCreateRequest": {
|
|
6493
|
+
"type": "object",
|
|
6494
|
+
"description": "Raw annotation creation intent — bus handler assembles the W3C annotation",
|
|
6495
|
+
"properties": {
|
|
6496
|
+
"correlationId": {
|
|
6497
|
+
"type": "string"
|
|
6498
|
+
},
|
|
6499
|
+
"resourceId": {
|
|
6500
|
+
"type": "string"
|
|
6501
|
+
},
|
|
6502
|
+
"request": {
|
|
6503
|
+
"$ref": "#/components/schemas/CreateAnnotationRequest"
|
|
6504
|
+
}
|
|
6505
|
+
},
|
|
6506
|
+
"required": [
|
|
6507
|
+
"correlationId",
|
|
6508
|
+
"resourceId",
|
|
6509
|
+
"request"
|
|
6510
|
+
]
|
|
6511
|
+
},
|
|
8268
6512
|
"MarkDeleteCommand": {
|
|
8269
6513
|
"type": "object",
|
|
8270
6514
|
"description": "Bus command to delete an annotation.",
|
|
8271
6515
|
"properties": {
|
|
8272
|
-
"
|
|
8273
|
-
"type": "string"
|
|
6516
|
+
"_userId": {
|
|
6517
|
+
"type": "string",
|
|
6518
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
8274
6519
|
},
|
|
8275
|
-
"
|
|
6520
|
+
"annotationId": {
|
|
8276
6521
|
"type": "string"
|
|
8277
6522
|
},
|
|
8278
6523
|
"resourceId": {
|
|
@@ -8413,24 +6658,35 @@
|
|
|
8413
6658
|
]
|
|
8414
6659
|
},
|
|
8415
6660
|
"body": {
|
|
8416
|
-
"
|
|
8417
|
-
|
|
8418
|
-
|
|
8419
|
-
|
|
6661
|
+
"oneOf": [
|
|
6662
|
+
{
|
|
6663
|
+
"$ref": "#/components/schemas/AnnotationBody",
|
|
6664
|
+
"description": "Single body (TextualBody or SpecificResource)"
|
|
6665
|
+
},
|
|
6666
|
+
{
|
|
6667
|
+
"type": "array",
|
|
6668
|
+
"items": {
|
|
6669
|
+
"$ref": "#/components/schemas/AnnotationBody"
|
|
6670
|
+
},
|
|
6671
|
+
"minItems": 1,
|
|
6672
|
+
"description": "Non-empty array of mixed TextualBody / SpecificResource bodies"
|
|
6673
|
+
}
|
|
6674
|
+
],
|
|
6675
|
+
"description": "Optional body. Omit for annotations whose motivation alone is meaningful (e.g. highlighting) or whose user-supplied content is empty (e.g. an assessing annotation saved without comment text). Shape matches Annotation.body."
|
|
8420
6676
|
}
|
|
8421
6677
|
},
|
|
8422
6678
|
"required": [
|
|
8423
6679
|
"motivation",
|
|
8424
|
-
"selector"
|
|
8425
|
-
"body"
|
|
6680
|
+
"selector"
|
|
8426
6681
|
]
|
|
8427
6682
|
},
|
|
8428
6683
|
"MarkUnarchiveCommand": {
|
|
8429
6684
|
"type": "object",
|
|
8430
6685
|
"description": "Bus command to unarchive a previously archived resource.",
|
|
8431
6686
|
"properties": {
|
|
8432
|
-
"
|
|
8433
|
-
"type": "string"
|
|
6687
|
+
"_userId": {
|
|
6688
|
+
"type": "string",
|
|
6689
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
8434
6690
|
},
|
|
8435
6691
|
"resourceId": {
|
|
8436
6692
|
"type": "string"
|
|
@@ -8447,6 +6703,10 @@
|
|
|
8447
6703
|
"type": "object",
|
|
8448
6704
|
"description": "Bus command to update an annotation's body with patch operations.",
|
|
8449
6705
|
"properties": {
|
|
6706
|
+
"_userId": {
|
|
6707
|
+
"type": "string",
|
|
6708
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
6709
|
+
},
|
|
8450
6710
|
"correlationId": {
|
|
8451
6711
|
"type": "string",
|
|
8452
6712
|
"description": "Correlation id threaded from the originating route through to event metadata. Lets the events-stream deliver matched results to the client that initiated the bind."
|
|
@@ -8454,9 +6714,6 @@
|
|
|
8454
6714
|
"annotationId": {
|
|
8455
6715
|
"type": "string"
|
|
8456
6716
|
},
|
|
8457
|
-
"userId": {
|
|
8458
|
-
"type": "string"
|
|
8459
|
-
},
|
|
8460
6717
|
"resourceId": {
|
|
8461
6718
|
"type": "string"
|
|
8462
6719
|
},
|
|
@@ -8479,7 +6736,6 @@
|
|
|
8479
6736
|
},
|
|
8480
6737
|
"required": [
|
|
8481
6738
|
"annotationId",
|
|
8482
|
-
"userId",
|
|
8483
6739
|
"resourceId",
|
|
8484
6740
|
"operations"
|
|
8485
6741
|
]
|
|
@@ -8491,8 +6747,9 @@
|
|
|
8491
6747
|
"resourceId": {
|
|
8492
6748
|
"type": "string"
|
|
8493
6749
|
},
|
|
8494
|
-
"
|
|
8495
|
-
"type": "string"
|
|
6750
|
+
"_userId": {
|
|
6751
|
+
"type": "string",
|
|
6752
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
8496
6753
|
},
|
|
8497
6754
|
"currentEntityTypes": {
|
|
8498
6755
|
"type": "array",
|
|
@@ -8509,7 +6766,6 @@
|
|
|
8509
6766
|
},
|
|
8510
6767
|
"required": [
|
|
8511
6768
|
"resourceId",
|
|
8512
|
-
"userId",
|
|
8513
6769
|
"currentEntityTypes",
|
|
8514
6770
|
"updatedEntityTypes"
|
|
8515
6771
|
]
|
|
@@ -8722,6 +6978,10 @@
|
|
|
8722
6978
|
"type": "object",
|
|
8723
6979
|
"description": "Bus command to create a yielded resource in the knowledge base.",
|
|
8724
6980
|
"properties": {
|
|
6981
|
+
"_userId": {
|
|
6982
|
+
"type": "string",
|
|
6983
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
6984
|
+
},
|
|
8725
6985
|
"name": {
|
|
8726
6986
|
"type": "string"
|
|
8727
6987
|
},
|
|
@@ -8737,9 +6997,6 @@
|
|
|
8737
6997
|
"format": {
|
|
8738
6998
|
"$ref": "#/components/schemas/ContentFormat"
|
|
8739
6999
|
},
|
|
8740
|
-
"userId": {
|
|
8741
|
-
"type": "string"
|
|
8742
|
-
},
|
|
8743
7000
|
"language": {
|
|
8744
7001
|
"type": "string"
|
|
8745
7002
|
},
|
|
@@ -8791,8 +7048,7 @@
|
|
|
8791
7048
|
"storageUri",
|
|
8792
7049
|
"contentChecksum",
|
|
8793
7050
|
"byteSize",
|
|
8794
|
-
"format"
|
|
8795
|
-
"userId"
|
|
7051
|
+
"format"
|
|
8796
7052
|
]
|
|
8797
7053
|
},
|
|
8798
7054
|
"YieldCreateOk": {
|
|
@@ -8827,23 +7083,23 @@
|
|
|
8827
7083
|
"type": "object",
|
|
8828
7084
|
"description": "Bus command to move (rename) a yielded resource.",
|
|
8829
7085
|
"properties": {
|
|
7086
|
+
"_userId": {
|
|
7087
|
+
"type": "string",
|
|
7088
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
7089
|
+
},
|
|
8830
7090
|
"fromUri": {
|
|
8831
7091
|
"type": "string"
|
|
8832
7092
|
},
|
|
8833
7093
|
"toUri": {
|
|
8834
7094
|
"type": "string"
|
|
8835
7095
|
},
|
|
8836
|
-
"userId": {
|
|
8837
|
-
"type": "string"
|
|
8838
|
-
},
|
|
8839
7096
|
"noGit": {
|
|
8840
7097
|
"type": "boolean"
|
|
8841
7098
|
}
|
|
8842
7099
|
},
|
|
8843
7100
|
"required": [
|
|
8844
7101
|
"fromUri",
|
|
8845
|
-
"toUri"
|
|
8846
|
-
"userId"
|
|
7102
|
+
"toUri"
|
|
8847
7103
|
]
|
|
8848
7104
|
},
|
|
8849
7105
|
"YieldRequestCommand": {
|
|
@@ -8901,6 +7157,10 @@
|
|
|
8901
7157
|
"type": "object",
|
|
8902
7158
|
"description": "Bus command to update a yielded resource's storage content.",
|
|
8903
7159
|
"properties": {
|
|
7160
|
+
"_userId": {
|
|
7161
|
+
"type": "string",
|
|
7162
|
+
"description": "Authenticated user's DID, injected by the /bus/emit gateway. Clients do not set this."
|
|
7163
|
+
},
|
|
8904
7164
|
"resourceId": {
|
|
8905
7165
|
"type": "string"
|
|
8906
7166
|
},
|
|
@@ -8913,9 +7173,6 @@
|
|
|
8913
7173
|
"byteSize": {
|
|
8914
7174
|
"type": "integer"
|
|
8915
7175
|
},
|
|
8916
|
-
"userId": {
|
|
8917
|
-
"type": "string"
|
|
8918
|
-
},
|
|
8919
7176
|
"noGit": {
|
|
8920
7177
|
"type": "boolean"
|
|
8921
7178
|
}
|
|
@@ -8924,8 +7181,7 @@
|
|
|
8924
7181
|
"resourceId",
|
|
8925
7182
|
"storageUri",
|
|
8926
7183
|
"contentChecksum",
|
|
8927
|
-
"byteSize"
|
|
8928
|
-
"userId"
|
|
7184
|
+
"byteSize"
|
|
8929
7185
|
]
|
|
8930
7186
|
},
|
|
8931
7187
|
"YieldUpdateOk": {
|