@kumwe/studio-protocol 0.1.0-alpha.5 → 0.1.0-beta.2

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.
Files changed (62) hide show
  1. package/README.md +72 -6
  2. package/THIRD_PARTY_NOTICES.md +9 -0
  3. package/dist/generated/schema-models.d.ts +2750 -0
  4. package/dist/generated/schema-models.d.ts.map +1 -0
  5. package/dist/generated/schema-models.js +1 -0
  6. package/dist/guards.d.ts +4 -1
  7. package/dist/guards.d.ts.map +1 -1
  8. package/dist/guards.js +1 -332
  9. package/dist/host-failure.d.ts +16 -0
  10. package/dist/host-failure.d.ts.map +1 -0
  11. package/dist/host-failure.js +1 -0
  12. package/dist/index.d.ts +7 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +1 -4
  15. package/dist/release.d.ts +8 -0
  16. package/dist/release.d.ts.map +1 -0
  17. package/dist/release.js +1 -0
  18. package/dist/schemas.d.ts +25 -0
  19. package/dist/schemas.d.ts.map +1 -1
  20. package/dist/schemas.js +1 -93
  21. package/dist/types.d.ts +447 -7
  22. package/dist/types.d.ts.map +1 -1
  23. package/dist/types.js +1 -3
  24. package/package.json +7 -3
  25. package/schemas/authoring-http-vector.schema.json +195 -0
  26. package/schemas/authoring-http.schema.json +505 -0
  27. package/schemas/authoring-message-catalog.schema.json +45 -0
  28. package/schemas/authoring-save.schema.json +188 -0
  29. package/schemas/authoring-session.schema.json +151 -0
  30. package/schemas/authoring-target.schema.json +160 -0
  31. package/schemas/authoring-web-vector.schema.json +236 -0
  32. package/schemas/binding-projection-vector.schema.json +127 -0
  33. package/schemas/block-definition.schema.json +10 -1
  34. package/schemas/common.schema.json +45 -0
  35. package/schemas/host-error.schema.json +22 -1
  36. package/schemas/host-operations.schema.json +16 -0
  37. package/schemas/host-sequence-vector.schema.json +342 -0
  38. package/schemas/host-vector.schema.json +2 -0
  39. package/schemas/manifest.json +120 -11
  40. package/schemas/plugin-manifest.schema.json +1 -0
  41. package/schemas/preview-message.schema.json +44 -12
  42. package/schemas/preview-vector.schema.json +52 -0
  43. package/schemas/renderer-web-vector.schema.json +273 -0
  44. package/schemas/reusable-content-type.schema.json +99 -0
  45. package/schemas/rich-text-projection.schema.json +12 -3
  46. package/schemas/rich-text.schema.json +156 -7
  47. package/schemas/schema-profile-vector.schema.json +133 -0
  48. package/schemas/schema-profile.schema.json +47 -7
  49. package/schemas/studio-browser-assets.schema.json +376 -0
  50. package/schemas/studio-chart.schema.json +35 -0
  51. package/schemas/studio-config.schema.json +1 -33
  52. package/schemas/studio-deployment.schema.json +347 -0
  53. package/schemas/studio-drawing.schema.json +44 -0
  54. package/schemas/studio-money.schema.json +16 -0
  55. package/schemas/studio-presentation.schema.json +31 -0
  56. package/schemas/studio-release.schema.json +125 -0
  57. package/schemas/studio-table.schema.json +27 -0
  58. package/studio-release.json +35 -0
  59. package/dist/guards.js.map +0 -1
  60. package/dist/index.js.map +0 -1
  61. package/dist/schemas.js.map +0 -1
  62. package/dist/types.js.map +0 -1
@@ -31,7 +31,20 @@
31
31
  "minimum": 0
32
32
  },
33
33
  "type": {
34
- "$ref": "common.schema.json#/$defs/qualifiedName"
34
+ "enum": [
35
+ "studio.preview/activated",
36
+ "studio.preview/dispose",
37
+ "studio.preview/error",
38
+ "studio.preview/measure",
39
+ "studio.preview/measurements",
40
+ "studio.preview/ready",
41
+ "studio.preview/reload",
42
+ "studio.preview/render",
43
+ "studio.preview/rendered",
44
+ "studio.preview/select",
45
+ "studio.preview/teardown",
46
+ "studio.preview/viewport"
47
+ ]
35
48
  },
36
49
  "payload": {
37
50
  "type": "object",
@@ -239,6 +252,12 @@
239
252
  }
240
253
  ],
241
254
  "$defs": {
255
+ "previewMarker": {
256
+ "description": "A deterministic marker for one node in a canonical draft: the draft digest followed by its zero-based Blueprint preorder ordinal.",
257
+ "type": "string",
258
+ "pattern": "^studio\\.preview/node/[0-9a-f]{64}/(?:0|[1-9][0-9]{0,4})(?![\\s\\S])",
259
+ "maxLength": 90
260
+ },
242
261
  "ready": {
243
262
  "type": "object",
244
263
  "additionalProperties": false,
@@ -262,7 +281,7 @@
262
281
  "render": {
263
282
  "type": "object",
264
283
  "additionalProperties": false,
265
- "required": ["artifactId", "draftDigest", "viewport"],
284
+ "required": ["artifactId", "draftDigest", "draftRevision", "requestId", "viewport"],
266
285
  "properties": {
267
286
  "artifactId": {
268
287
  "$ref": "common.schema.json#/$defs/stableId"
@@ -274,6 +293,10 @@
274
293
  "draftRevision": {
275
294
  "$ref": "common.schema.json#/$defs/revision"
276
295
  },
296
+ "requestId": {
297
+ "$ref": "common.schema.json#/$defs/stableId",
298
+ "description": "A session-unique render attempt identifier. Retries use a new identifier even when draft and viewport are unchanged."
299
+ },
277
300
  "viewport": {
278
301
  "$ref": "common.schema.json#/$defs/localName"
279
302
  }
@@ -282,24 +305,29 @@
282
305
  "rendered": {
283
306
  "type": "object",
284
307
  "additionalProperties": false,
285
- "required": ["draftDigest", "markers", "diagnostics"],
308
+ "required": ["requestId", "draftDigest", "markers", "markerMap", "diagnostics"],
286
309
  "properties": {
287
310
  "draftDigest": {
288
311
  "type": "string",
289
312
  "pattern": "^[a-f0-9]{64}(?![\\s\\S])"
290
313
  },
314
+ "requestId": {
315
+ "$ref": "common.schema.json#/$defs/stableId",
316
+ "description": "The exact render attempt this response settles."
317
+ },
291
318
  "markers": {
292
319
  "type": "array",
293
320
  "maxItems": 100000,
321
+ "uniqueItems": true,
294
322
  "items": {
295
- "$ref": "common.schema.json#/$defs/stableId"
323
+ "$ref": "#/$defs/previewMarker"
296
324
  }
297
325
  },
298
326
  "markerMap": {
299
327
  "type": "object",
300
328
  "maxProperties": 100000,
301
329
  "propertyNames": {
302
- "$ref": "common.schema.json#/$defs/stableId"
330
+ "$ref": "#/$defs/previewMarker"
303
331
  },
304
332
  "additionalProperties": {
305
333
  "$ref": "common.schema.json#/$defs/stableId"
@@ -334,13 +362,16 @@
334
362
  "required": ["requestId", "markers"],
335
363
  "properties": {
336
364
  "requestId": {
337
- "$ref": "common.schema.json#/$defs/stableId"
365
+ "$ref": "common.schema.json#/$defs/stableId",
366
+ "description": "A session-unique measurement attempt identifier, never reused for another render or measurement."
338
367
  },
339
368
  "markers": {
340
369
  "type": "array",
370
+ "minItems": 1,
341
371
  "maxItems": 1000,
372
+ "uniqueItems": true,
342
373
  "items": {
343
- "$ref": "common.schema.json#/$defs/stableId"
374
+ "$ref": "#/$defs/previewMarker"
344
375
  }
345
376
  }
346
377
  }
@@ -361,7 +392,7 @@
361
392
  "type": "object",
362
393
  "maxProperties": 1000,
363
394
  "propertyNames": {
364
- "$ref": "common.schema.json#/$defs/stableId"
395
+ "$ref": "#/$defs/previewMarker"
365
396
  },
366
397
  "additionalProperties": {
367
398
  "type": "array",
@@ -375,8 +406,9 @@
375
406
  "unknown": {
376
407
  "type": "array",
377
408
  "maxItems": 1000,
409
+ "uniqueItems": true,
378
410
  "items": {
379
- "$ref": "common.schema.json#/$defs/stableId"
411
+ "$ref": "#/$defs/previewMarker"
380
412
  }
381
413
  },
382
414
  "viewport": {
@@ -492,8 +524,8 @@
492
524
  "enum": ["activate", "context-menu", "focus"]
493
525
  },
494
526
  "marker": {
495
- "description": "The opaque marker the renderer associated with the region. It carries nothing beyond the node identity the render already published.",
496
- "$ref": "common.schema.json#/$defs/stableId"
527
+ "description": "A marker from the renderer's currently accepted inventory. The channel drops invented and stale markers.",
528
+ "$ref": "#/$defs/previewMarker"
497
529
  }
498
530
  }
499
531
  },
@@ -519,7 +551,7 @@
519
551
  "height": {
520
552
  "description": "Bounded CSS-pixel height.",
521
553
  "type": "integer",
522
- "minimum": 120,
554
+ "minimum": 240,
523
555
  "maximum": 10000
524
556
  },
525
557
  "width": {
@@ -0,0 +1,52 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/preview-vector.schema.json",
4
+ "title": "Studio preview identity conformance vector",
5
+ "description": "One complete Blueprint draft, its exact render-attempt identity, and the SHA-256 plus deterministic marker inventory every implementation must reproduce under the preview identity profile.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "contractVersion",
10
+ "kind",
11
+ "id",
12
+ "description",
13
+ "profile",
14
+ "protocolVersion",
15
+ "draft",
16
+ "render",
17
+ "expect"
18
+ ],
19
+ "properties": {
20
+ "contractVersion": { "$ref": "common.schema.json#/$defs/contractVersion" },
21
+ "kind": { "const": "preview-vector" },
22
+ "id": { "$ref": "common.schema.json#/$defs/stableId" },
23
+ "description": { "type": "string", "minLength": 1, "maxLength": 1000 },
24
+ "profile": { "const": "studio.profile/preview-identity-v1" },
25
+ "protocolVersion": { "const": "0.1.0-draft.2" },
26
+ "draft": { "$ref": "blueprint.schema.json" },
27
+ "render": { "$ref": "preview-message.schema.json#/$defs/render" },
28
+ "expect": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": ["draftDigest", "markers", "markerMap"],
32
+ "properties": {
33
+ "draftDigest": {
34
+ "type": "string",
35
+ "pattern": "^[0-9a-f]{64}(?![\\s\\S])"
36
+ },
37
+ "markers": {
38
+ "type": "array",
39
+ "maxItems": 100000,
40
+ "uniqueItems": true,
41
+ "items": { "$ref": "preview-message.schema.json#/$defs/previewMarker" }
42
+ },
43
+ "markerMap": {
44
+ "type": "object",
45
+ "maxProperties": 100000,
46
+ "propertyNames": { "$ref": "preview-message.schema.json#/$defs/previewMarker" },
47
+ "additionalProperties": { "$ref": "common.schema.json#/$defs/stableId" }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,273 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/renderer-web-vector.schema.json",
4
+ "title": "Studio renderer-web conformance vector",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["id", "coverage", "roots", "bindings", "media", "expect"],
8
+ "properties": {
9
+ "id": { "$ref": "common.schema.json#/$defs/stableId" },
10
+ "coverage": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["blockTypes", "behaviors", "presentation", "security"],
14
+ "properties": {
15
+ "blockTypes": {
16
+ "type": "array",
17
+ "maxItems": 100,
18
+ "uniqueItems": true,
19
+ "items": { "$ref": "common.schema.json#/$defs/qualifiedName" }
20
+ },
21
+ "behaviors": {
22
+ "type": "array",
23
+ "maxItems": 50,
24
+ "uniqueItems": true,
25
+ "items": {
26
+ "enum": [
27
+ "accordion-native",
28
+ "countdown",
29
+ "dialog",
30
+ "lightbox",
31
+ "navigation-disclosure",
32
+ "notice-dismiss",
33
+ "popover",
34
+ "slideshow",
35
+ "tabs"
36
+ ]
37
+ }
38
+ },
39
+ "presentation": {
40
+ "type": "array",
41
+ "maxItems": 50,
42
+ "uniqueItems": true,
43
+ "items": {
44
+ "enum": [
45
+ "alignment",
46
+ "inverse",
47
+ "markers",
48
+ "motion",
49
+ "position",
50
+ "print",
51
+ "responsive-visibility",
52
+ "scrolling",
53
+ "sizing",
54
+ "spacing"
55
+ ]
56
+ }
57
+ },
58
+ "security": {
59
+ "type": "array",
60
+ "maxItems": 50,
61
+ "uniqueItems": true,
62
+ "items": {
63
+ "enum": [
64
+ "active-media-deny",
65
+ "blob-default-deny",
66
+ "escaped-text",
67
+ "safe-url-deny",
68
+ "typed-data-fallback"
69
+ ]
70
+ }
71
+ }
72
+ }
73
+ },
74
+ "context": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "properties": {
78
+ "allowBlobMedia": { "type": "boolean" },
79
+ "scopedStyles": {
80
+ "description": "Trusted structured host style input keyed by the exact Blueprint node ID.",
81
+ "type": "object",
82
+ "maxProperties": 100,
83
+ "propertyNames": { "$ref": "common.schema.json#/$defs/stableId" },
84
+ "additionalProperties": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": ["rules"],
88
+ "properties": {
89
+ "rules": {
90
+ "type": "array",
91
+ "maxItems": 100,
92
+ "items": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": ["target", "declarations"],
96
+ "properties": {
97
+ "target": {
98
+ "enum": ["action", "content", "heading", "media", "self"]
99
+ },
100
+ "declarations": {
101
+ "type": "object",
102
+ "maxProperties": 50,
103
+ "propertyNames": {
104
+ "enum": [
105
+ "background-color",
106
+ "border-color",
107
+ "border-radius",
108
+ "border-style",
109
+ "border-width",
110
+ "color",
111
+ "font-family",
112
+ "font-size",
113
+ "font-style",
114
+ "font-weight",
115
+ "gap",
116
+ "letter-spacing",
117
+ "line-height",
118
+ "margin-block",
119
+ "margin-inline",
120
+ "max-inline-size",
121
+ "min-block-size",
122
+ "opacity",
123
+ "padding-block",
124
+ "padding-inline",
125
+ "text-align",
126
+ "text-decoration",
127
+ "text-transform"
128
+ ]
129
+ },
130
+ "additionalProperties": {
131
+ "type": "string",
132
+ "maxLength": 256,
133
+ "pattern": "^(?:#[0-9A-Fa-f]{3,8}|-?[0-9]+(?:\\.[0-9]+)?(?:ch|em|rem|%|px)?|[a-z][a-z0-9 -]{0,126}|var\\(--studio-[a-z0-9-]{1,100}\\))$"
134
+ }
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ },
144
+ "roots": {
145
+ "type": "array",
146
+ "minItems": 1,
147
+ "maxItems": 100,
148
+ "items": { "$ref": "blueprint.schema.json#/$defs/node" }
149
+ },
150
+ "bindings": {
151
+ "type": "array",
152
+ "maxItems": 1000,
153
+ "items": {
154
+ "type": "object",
155
+ "additionalProperties": false,
156
+ "required": ["nodeId", "port", "value"],
157
+ "properties": {
158
+ "nodeId": { "$ref": "common.schema.json#/$defs/stableId" },
159
+ "port": { "$ref": "common.schema.json#/$defs/localName" },
160
+ "value": { "$ref": "common.schema.json#/$defs/jsonValue" }
161
+ }
162
+ }
163
+ },
164
+ "media": {
165
+ "type": "array",
166
+ "maxItems": 1000,
167
+ "items": {
168
+ "type": "object",
169
+ "additionalProperties": false,
170
+ "required": ["assetId", "src", "altText"],
171
+ "properties": {
172
+ "assetId": { "$ref": "common.schema.json#/$defs/stableId" },
173
+ "src": { "type": "string", "minLength": 1, "maxLength": 2048 },
174
+ "altText": { "type": "string", "maxLength": 5000 },
175
+ "mediaType": { "type": "string", "maxLength": 255 },
176
+ "caption": { "type": "string", "maxLength": 20000 },
177
+ "width": { "type": "integer", "minimum": 1, "maximum": 100000 },
178
+ "height": { "type": "integer", "minimum": 1, "maximum": 100000 }
179
+ }
180
+ }
181
+ },
182
+ "expect": {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "required": [
186
+ "htmlContains",
187
+ "htmlExcludes",
188
+ "htmlBytes",
189
+ "htmlSha256",
190
+ "cssBytes",
191
+ "cssContains",
192
+ "cssSha256",
193
+ "publicStyleAsset",
194
+ "enhancements",
195
+ "activationMarkers"
196
+ ],
197
+ "properties": {
198
+ "activationMarkers": {
199
+ "description": "The complete renderer-emitted data-attribute vocabulary a public enhancement runtime is allowed to discover in this vector.",
200
+ "type": "array",
201
+ "maxItems": 100,
202
+ "uniqueItems": true,
203
+ "items": {
204
+ "type": "string",
205
+ "minLength": 12,
206
+ "maxLength": 100,
207
+ "pattern": "^data-studio-[a-z0-9]+(?:-[a-z0-9]+)*$"
208
+ }
209
+ },
210
+ "htmlContains": {
211
+ "type": "array",
212
+ "maxItems": 100,
213
+ "items": { "type": "string", "maxLength": 10000 }
214
+ },
215
+ "htmlExcludes": {
216
+ "type": "array",
217
+ "maxItems": 100,
218
+ "items": { "type": "string", "maxLength": 10000 }
219
+ },
220
+ "htmlBytes": {
221
+ "description": "Exact UTF-8 byte length of the canonical renderer HTML, closing activation-marker topology as wire output.",
222
+ "type": "integer",
223
+ "minimum": 1,
224
+ "maximum": 1048576
225
+ },
226
+ "htmlSha256": {
227
+ "description": "Lowercase SHA-256 of the exact canonical renderer HTML bytes.",
228
+ "type": "string",
229
+ "pattern": "^[a-f0-9]{64}$"
230
+ },
231
+ "cssContains": {
232
+ "type": "array",
233
+ "maxItems": 100,
234
+ "items": { "type": "string", "maxLength": 10000 }
235
+ },
236
+ "cssBytes": {
237
+ "description": "Exact UTF-8 byte length of the canonical compact renderer stylesheet.",
238
+ "type": "integer",
239
+ "minimum": 1,
240
+ "maximum": 262144
241
+ },
242
+ "cssSha256": {
243
+ "description": "Lowercase SHA-256 of the exact canonical renderer stylesheet bytes.",
244
+ "type": "string",
245
+ "pattern": "^[a-f0-9]{64}$"
246
+ },
247
+ "publicStyleAsset": {
248
+ "$ref": "studio-browser-assets.schema.json#/$defs/publicStyleAsset"
249
+ },
250
+ "enhancements": {
251
+ "type": "array",
252
+ "maxItems": 100,
253
+ "items": {
254
+ "enum": [
255
+ "chart",
256
+ "countdown",
257
+ "diagram",
258
+ "dialog",
259
+ "lightbox",
260
+ "math",
261
+ "motion",
262
+ "navigation",
263
+ "notice",
264
+ "popover",
265
+ "slideshow",
266
+ "tabs"
267
+ ]
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/reusable-content-type.schema.json",
4
+ "title": "Studio host-owned reusable content type projection",
5
+ "description": "The host-facing definition that coordinates exact Model and Blueprint revisions. It is not a portable Studio artifact and never contains Entry values.",
6
+ "$ref": "#/$defs/definition",
7
+ "$defs": {
8
+ "reference": {
9
+ "type": "object",
10
+ "additionalProperties": false,
11
+ "required": ["id", "version", "revision"],
12
+ "properties": {
13
+ "id": { "$ref": "common.schema.json#/$defs/stableId" },
14
+ "version": { "$ref": "common.schema.json#/$defs/semanticVersion" },
15
+ "revision": { "$ref": "common.schema.json#/$defs/revision" }
16
+ }
17
+ },
18
+ "authoringPolicy": {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "required": ["modes", "itemComposition"],
22
+ "properties": {
23
+ "modes": {
24
+ "type": "array",
25
+ "minItems": 1,
26
+ "maxItems": 3,
27
+ "uniqueItems": true,
28
+ "items": { "enum": ["model", "blueprint", "content"] }
29
+ },
30
+ "itemComposition": { "enum": ["denied", "overrides"] }
31
+ }
32
+ },
33
+ "definition": {
34
+ "type": "object",
35
+ "additionalProperties": false,
36
+ "required": [
37
+ "contractVersion",
38
+ "kind",
39
+ "id",
40
+ "version",
41
+ "revision",
42
+ "label",
43
+ "status",
44
+ "model",
45
+ "blueprint",
46
+ "authoringPolicy"
47
+ ],
48
+ "properties": {
49
+ "contractVersion": { "$ref": "common.schema.json#/$defs/contractVersion" },
50
+ "kind": { "const": "reusable-content-type" },
51
+ "id": { "$ref": "common.schema.json#/$defs/stableId" },
52
+ "version": { "$ref": "common.schema.json#/$defs/semanticVersion" },
53
+ "revision": { "$ref": "common.schema.json#/$defs/revision" },
54
+ "label": { "$ref": "common.schema.json#/$defs/messageReference" },
55
+ "status": { "enum": ["draft", "published", "retired"] },
56
+ "model": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" },
57
+ "blueprint": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" },
58
+ "authoringPolicy": { "$ref": "#/$defs/authoringPolicy" },
59
+ "extensions": { "$ref": "common.schema.json#/$defs/extensions" }
60
+ }
61
+ },
62
+ "summary": {
63
+ "type": "object",
64
+ "additionalProperties": false,
65
+ "required": ["reference", "label", "model", "blueprint"],
66
+ "properties": {
67
+ "reference": { "$ref": "#/$defs/reference" },
68
+ "label": { "$ref": "common.schema.json#/$defs/messageReference" },
69
+ "model": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" },
70
+ "blueprint": { "$ref": "common.schema.json#/$defs/lockedArtifactReference" }
71
+ }
72
+ },
73
+ "listQuery": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": ["targetId", "resourceContext", "limit"],
77
+ "properties": {
78
+ "targetId": { "$ref": "common.schema.json#/$defs/qualifiedName" },
79
+ "resourceContext": { "$ref": "common.schema.json#/$defs/resourceContext" },
80
+ "cursor": { "type": "string", "minLength": 1, "maxLength": 500 },
81
+ "limit": { "type": "integer", "minimum": 1, "maximum": 100 },
82
+ "search": { "type": "string", "maxLength": 500 }
83
+ }
84
+ },
85
+ "listPage": {
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "required": ["items"],
89
+ "properties": {
90
+ "items": {
91
+ "type": "array",
92
+ "maxItems": 100,
93
+ "items": { "$ref": "#/$defs/summary" }
94
+ },
95
+ "nextCursor": { "type": "string", "minLength": 1, "maxLength": 500 }
96
+ }
97
+ }
98
+ }
99
+ }
@@ -24,7 +24,16 @@
24
24
  "additionalProperties": false,
25
25
  "required": ["type", "text", "spans", "embeds"],
26
26
  "properties": {
27
- "type": { "enum": ["heading", "horizontalRule", "paragraph"] },
27
+ "type": {
28
+ "enum": [
29
+ "checklistItem",
30
+ "codeBlock",
31
+ "heading",
32
+ "horizontalRule",
33
+ "paragraph",
34
+ "tableCell"
35
+ ]
36
+ },
28
37
  "text": {
29
38
  "type": "string",
30
39
  "maxLength": 250000
@@ -51,9 +60,9 @@
51
60
  "marks": {
52
61
  "type": "array",
53
62
  "minItems": 1,
54
- "maxItems": 4,
63
+ "maxItems": 5,
55
64
  "uniqueItems": true,
56
- "items": { "enum": ["bold", "code", "italic", "strike"] }
65
+ "items": { "enum": ["bold", "code", "highlight", "italic", "strike"] }
57
66
  }
58
67
  }
59
68
  },