@kumwe/studio-protocol 0.1.0-alpha.6 → 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 (56) hide show
  1. package/README.md +67 -7
  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.map +1 -1
  7. package/dist/guards.js +1 -374
  8. package/dist/host-failure.d.ts +16 -0
  9. package/dist/host-failure.d.ts.map +1 -0
  10. package/dist/host-failure.js +1 -0
  11. package/dist/index.d.ts +6 -2
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -4
  14. package/dist/release.d.ts +8 -0
  15. package/dist/release.d.ts.map +1 -0
  16. package/dist/release.js +1 -0
  17. package/dist/schemas.d.ts +22 -0
  18. package/dist/schemas.d.ts.map +1 -1
  19. package/dist/schemas.js +1 -102
  20. package/dist/types.d.ts +435 -2
  21. package/dist/types.d.ts.map +1 -1
  22. package/dist/types.js +1 -3
  23. package/package.json +7 -3
  24. package/schemas/authoring-http-vector.schema.json +195 -0
  25. package/schemas/authoring-http.schema.json +505 -0
  26. package/schemas/authoring-message-catalog.schema.json +45 -0
  27. package/schemas/authoring-save.schema.json +188 -0
  28. package/schemas/authoring-session.schema.json +151 -0
  29. package/schemas/authoring-target.schema.json +160 -0
  30. package/schemas/authoring-web-vector.schema.json +236 -0
  31. package/schemas/binding-projection-vector.schema.json +127 -0
  32. package/schemas/block-definition.schema.json +10 -1
  33. package/schemas/common.schema.json +45 -0
  34. package/schemas/host-error.schema.json +22 -1
  35. package/schemas/host-operations.schema.json +16 -0
  36. package/schemas/host-vector.schema.json +2 -0
  37. package/schemas/manifest.json +103 -9
  38. package/schemas/plugin-manifest.schema.json +1 -0
  39. package/schemas/renderer-web-vector.schema.json +273 -0
  40. package/schemas/reusable-content-type.schema.json +99 -0
  41. package/schemas/rich-text-projection.schema.json +12 -3
  42. package/schemas/rich-text.schema.json +156 -7
  43. package/schemas/studio-browser-assets.schema.json +376 -0
  44. package/schemas/studio-chart.schema.json +35 -0
  45. package/schemas/studio-config.schema.json +1 -33
  46. package/schemas/studio-deployment.schema.json +347 -0
  47. package/schemas/studio-drawing.schema.json +44 -0
  48. package/schemas/studio-money.schema.json +16 -0
  49. package/schemas/studio-presentation.schema.json +31 -0
  50. package/schemas/studio-release.schema.json +125 -0
  51. package/schemas/studio-table.schema.json +27 -0
  52. package/studio-release.json +35 -0
  53. package/dist/guards.js.map +0 -1
  54. package/dist/index.js.map +0 -1
  55. package/dist/schemas.js.map +0 -1
  56. package/dist/types.js.map +0 -1
@@ -0,0 +1,505 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/authoring-http.schema.json",
4
+ "title": "Studio contextual authoring HTTP exchange",
5
+ "description": "The language-neutral HTTP/AJAX binding for one contextual authoring operation. Each exchange fixes the route, exact request argument, capability identifier, idempotency boundary, and normalized result without prescribing a server implementation language.",
6
+ "$ref": "#/$defs/exchange",
7
+ "$defs": {
8
+ "exchange": {
9
+ "oneOf": [
10
+ { "$ref": "#/$defs/resolveTargetExchange" },
11
+ { "$ref": "#/$defs/listTypesExchange" },
12
+ { "$ref": "#/$defs/startExchange" },
13
+ { "$ref": "#/$defs/planSaveExchange" },
14
+ { "$ref": "#/$defs/saveItemExchange" },
15
+ { "$ref": "#/$defs/saveNewTypeVersionExchange" },
16
+ { "$ref": "#/$defs/saveAsNewTypeExchange" }
17
+ ]
18
+ },
19
+ "resolveTargetExchange": {
20
+ "$ref": "#/$defs/operationExchange",
21
+ "type": "object",
22
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
23
+ "properties": {
24
+ "route": { "const": "authoring/resolve-target" },
25
+ "request": { "$ref": "#/$defs/resolveTargetRequest" },
26
+ "response": { "$ref": "#/$defs/resolveTargetResponse" }
27
+ }
28
+ },
29
+ "listTypesExchange": {
30
+ "$ref": "#/$defs/operationExchange",
31
+ "type": "object",
32
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
33
+ "properties": {
34
+ "route": { "const": "authoring/list-types" },
35
+ "request": { "$ref": "#/$defs/listTypesRequest" },
36
+ "response": { "$ref": "#/$defs/listTypesResponse" }
37
+ }
38
+ },
39
+ "startExchange": {
40
+ "$ref": "#/$defs/operationExchange",
41
+ "type": "object",
42
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
43
+ "properties": {
44
+ "route": { "const": "authoring/start" },
45
+ "request": { "$ref": "#/$defs/startRequest" },
46
+ "response": { "$ref": "#/$defs/startResponse" }
47
+ }
48
+ },
49
+ "planSaveExchange": {
50
+ "$ref": "#/$defs/operationExchange",
51
+ "type": "object",
52
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
53
+ "properties": {
54
+ "route": { "const": "authoring/plan-save" },
55
+ "request": { "$ref": "#/$defs/planSaveRequest" },
56
+ "response": { "$ref": "#/$defs/planSaveResponse" }
57
+ }
58
+ },
59
+ "saveItemExchange": {
60
+ "$ref": "#/$defs/operationExchange",
61
+ "type": "object",
62
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
63
+ "properties": {
64
+ "route": { "const": "authoring/save-item" },
65
+ "request": { "$ref": "#/$defs/saveItemRequest" },
66
+ "response": { "$ref": "#/$defs/saveItemResponse" }
67
+ }
68
+ },
69
+ "saveNewTypeVersionExchange": {
70
+ "$ref": "#/$defs/operationExchange",
71
+ "type": "object",
72
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
73
+ "properties": {
74
+ "route": { "const": "authoring/save-new-type-version" },
75
+ "request": { "$ref": "#/$defs/saveNewTypeVersionRequest" },
76
+ "response": { "$ref": "#/$defs/saveNewTypeVersionResponse" }
77
+ }
78
+ },
79
+ "saveAsNewTypeExchange": {
80
+ "$ref": "#/$defs/operationExchange",
81
+ "type": "object",
82
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
83
+ "properties": {
84
+ "route": { "const": "authoring/save-as-new-type" },
85
+ "request": { "$ref": "#/$defs/saveAsNewTypeRequest" },
86
+ "response": { "$ref": "#/$defs/saveAsNewTypeResponse" }
87
+ }
88
+ },
89
+ "operationExchange": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "required": ["kind", "route", "request", "response"],
93
+ "properties": {
94
+ "kind": { "const": "authoring-http-exchange" },
95
+ "route": { "type": "string" },
96
+ "request": true,
97
+ "response": true
98
+ }
99
+ },
100
+ "resolveTargetRequest": {
101
+ "allOf": [
102
+ { "$ref": "host-request.schema.json" },
103
+ {
104
+ "type": "object",
105
+ "additionalProperties": false,
106
+ "required": ["arguments", "context"],
107
+ "properties": {
108
+ "arguments": {
109
+ "type": "object",
110
+ "additionalProperties": false,
111
+ "required": ["request"],
112
+ "properties": {
113
+ "request": { "$ref": "authoring-target.schema.json#/$defs/resolveRequest" }
114
+ }
115
+ },
116
+ "context": {
117
+ "type": "object",
118
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
119
+ "properties": {
120
+ "operationId": { "const": "studio.operation/authoring.resolve-target" },
121
+ "expectedRevision": false,
122
+ "idempotencyKey": false
123
+ }
124
+ }
125
+ }
126
+ }
127
+ ]
128
+ },
129
+ "listTypesRequest": {
130
+ "allOf": [
131
+ { "$ref": "host-request.schema.json" },
132
+ {
133
+ "type": "object",
134
+ "additionalProperties": false,
135
+ "required": ["arguments", "context"],
136
+ "properties": {
137
+ "arguments": {
138
+ "type": "object",
139
+ "additionalProperties": false,
140
+ "required": ["query"],
141
+ "properties": {
142
+ "query": { "$ref": "reusable-content-type.schema.json#/$defs/listQuery" }
143
+ }
144
+ },
145
+ "context": {
146
+ "type": "object",
147
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
148
+ "properties": {
149
+ "operationId": { "const": "studio.operation/authoring.list-types" },
150
+ "expectedRevision": false,
151
+ "idempotencyKey": false
152
+ }
153
+ }
154
+ }
155
+ }
156
+ ]
157
+ },
158
+ "startRequest": {
159
+ "allOf": [
160
+ { "$ref": "host-request.schema.json" },
161
+ {
162
+ "type": "object",
163
+ "additionalProperties": false,
164
+ "required": ["arguments", "context"],
165
+ "properties": {
166
+ "arguments": {
167
+ "type": "object",
168
+ "additionalProperties": false,
169
+ "required": ["request"],
170
+ "properties": {
171
+ "request": { "$ref": "authoring-session.schema.json#/$defs/startRequest" }
172
+ }
173
+ },
174
+ "context": {
175
+ "type": "object",
176
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
177
+ "required": ["idempotencyKey"],
178
+ "properties": {
179
+ "idempotencyKey": { "$ref": "common.schema.json#/$defs/stableId" },
180
+ "operationId": { "const": "studio.operation/authoring.start" },
181
+ "expectedRevision": false
182
+ }
183
+ }
184
+ }
185
+ }
186
+ ]
187
+ },
188
+ "planSaveRequest": {
189
+ "allOf": [
190
+ { "$ref": "host-request.schema.json" },
191
+ {
192
+ "type": "object",
193
+ "additionalProperties": false,
194
+ "required": ["arguments", "context"],
195
+ "properties": {
196
+ "arguments": {
197
+ "type": "object",
198
+ "additionalProperties": false,
199
+ "required": ["intent"],
200
+ "properties": {
201
+ "intent": { "$ref": "authoring-save.schema.json#/$defs/saveIntent" }
202
+ }
203
+ },
204
+ "context": {
205
+ "type": "object",
206
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
207
+ "properties": {
208
+ "operationId": { "const": "studio.operation/authoring.plan-save" },
209
+ "expectedRevision": false,
210
+ "idempotencyKey": false
211
+ }
212
+ }
213
+ }
214
+ }
215
+ ]
216
+ },
217
+ "saveItemRequest": {
218
+ "allOf": [
219
+ { "$ref": "host-request.schema.json" },
220
+ {
221
+ "type": "object",
222
+ "additionalProperties": false,
223
+ "required": ["arguments", "context"],
224
+ "properties": {
225
+ "arguments": {
226
+ "type": "object",
227
+ "additionalProperties": false,
228
+ "required": ["request"],
229
+ "properties": {
230
+ "request": { "$ref": "authoring-save.schema.json#/$defs/saveItemRequest" }
231
+ }
232
+ },
233
+ "context": {
234
+ "type": "object",
235
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
236
+ "required": ["idempotencyKey"],
237
+ "properties": {
238
+ "idempotencyKey": { "$ref": "common.schema.json#/$defs/stableId" },
239
+ "operationId": { "const": "studio.operation/authoring.save-item" },
240
+ "expectedRevision": false
241
+ }
242
+ }
243
+ }
244
+ }
245
+ ]
246
+ },
247
+ "saveNewTypeVersionRequest": {
248
+ "allOf": [
249
+ { "$ref": "host-request.schema.json" },
250
+ {
251
+ "type": "object",
252
+ "additionalProperties": false,
253
+ "required": ["arguments", "context"],
254
+ "properties": {
255
+ "arguments": {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "required": ["request"],
259
+ "properties": {
260
+ "request": {
261
+ "$ref": "authoring-save.schema.json#/$defs/saveNewTypeVersionRequest"
262
+ }
263
+ }
264
+ },
265
+ "context": {
266
+ "type": "object",
267
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
268
+ "required": ["idempotencyKey"],
269
+ "properties": {
270
+ "idempotencyKey": { "$ref": "common.schema.json#/$defs/stableId" },
271
+ "operationId": {
272
+ "const": "studio.operation/authoring.save-new-type-version"
273
+ },
274
+ "expectedRevision": false
275
+ }
276
+ }
277
+ }
278
+ }
279
+ ]
280
+ },
281
+ "saveAsNewTypeRequest": {
282
+ "allOf": [
283
+ { "$ref": "host-request.schema.json" },
284
+ {
285
+ "type": "object",
286
+ "additionalProperties": false,
287
+ "required": ["arguments", "context"],
288
+ "properties": {
289
+ "arguments": {
290
+ "type": "object",
291
+ "additionalProperties": false,
292
+ "required": ["request"],
293
+ "properties": {
294
+ "request": { "$ref": "authoring-save.schema.json#/$defs/saveAsNewTypeRequest" }
295
+ }
296
+ },
297
+ "context": {
298
+ "type": "object",
299
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
300
+ "required": ["idempotencyKey"],
301
+ "properties": {
302
+ "idempotencyKey": { "$ref": "common.schema.json#/$defs/stableId" },
303
+ "operationId": { "const": "studio.operation/authoring.save-as-new-type" },
304
+ "expectedRevision": false
305
+ }
306
+ }
307
+ }
308
+ }
309
+ ]
310
+ },
311
+ "resolveTargetResult": {
312
+ "$ref": "#/$defs/operationResult",
313
+ "type": "object",
314
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
315
+ "properties": {
316
+ "value": { "$ref": "authoring-target.schema.json#/$defs/resolution" }
317
+ }
318
+ },
319
+ "listTypesResult": {
320
+ "$ref": "#/$defs/operationResult",
321
+ "type": "object",
322
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
323
+ "properties": {
324
+ "value": { "$ref": "reusable-content-type.schema.json#/$defs/listPage" }
325
+ }
326
+ },
327
+ "startResult": {
328
+ "$ref": "#/$defs/operationResult",
329
+ "type": "object",
330
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
331
+ "properties": {
332
+ "value": { "$ref": "authoring-session.schema.json#/$defs/snapshot" }
333
+ }
334
+ },
335
+ "planSaveResult": {
336
+ "$ref": "#/$defs/operationResult",
337
+ "type": "object",
338
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
339
+ "properties": {
340
+ "value": { "$ref": "authoring-save.schema.json#/$defs/savePlan" }
341
+ }
342
+ },
343
+ "saveItemResult": {
344
+ "$ref": "#/$defs/operationResult",
345
+ "type": "object",
346
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
347
+ "properties": {
348
+ "value": {
349
+ "allOf": [
350
+ { "$ref": "authoring-save.schema.json#/$defs/saveResult" },
351
+ {
352
+ "type": "object",
353
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
354
+ "properties": { "outcome": { "const": "save-item" } }
355
+ }
356
+ ]
357
+ }
358
+ }
359
+ },
360
+ "saveNewTypeVersionResult": {
361
+ "$ref": "#/$defs/operationResult",
362
+ "type": "object",
363
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
364
+ "properties": {
365
+ "value": {
366
+ "allOf": [
367
+ { "$ref": "authoring-save.schema.json#/$defs/saveResult" },
368
+ {
369
+ "type": "object",
370
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
371
+ "properties": { "outcome": { "const": "save-new-type-version" } }
372
+ }
373
+ ]
374
+ }
375
+ }
376
+ },
377
+ "saveAsNewTypeResult": {
378
+ "$ref": "#/$defs/operationResult",
379
+ "type": "object",
380
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
381
+ "properties": {
382
+ "value": {
383
+ "allOf": [
384
+ { "$ref": "authoring-save.schema.json#/$defs/saveResult" },
385
+ {
386
+ "type": "object",
387
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
388
+ "properties": { "outcome": { "const": "save-as-new-type" } }
389
+ }
390
+ ]
391
+ }
392
+ }
393
+ },
394
+ "operationResult": {
395
+ "allOf": [
396
+ { "$ref": "host-result.schema.json" },
397
+ {
398
+ "type": "object",
399
+ "additionalProperties": false,
400
+ "required": ["value"],
401
+ "properties": {
402
+ "revision": false,
403
+ "value": true
404
+ }
405
+ }
406
+ ]
407
+ },
408
+ "resolveTargetResponse": {
409
+ "oneOf": [
410
+ { "$ref": "#/$defs/resolveTargetSuccessResponse" },
411
+ { "$ref": "#/$defs/errorResponse" }
412
+ ]
413
+ },
414
+ "resolveTargetSuccessResponse": {
415
+ "$ref": "#/$defs/successResponse",
416
+ "type": "object",
417
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
418
+ "properties": { "body": { "$ref": "#/$defs/resolveTargetResult" } }
419
+ },
420
+ "listTypesResponse": {
421
+ "oneOf": [{ "$ref": "#/$defs/listTypesSuccessResponse" }, { "$ref": "#/$defs/errorResponse" }]
422
+ },
423
+ "listTypesSuccessResponse": {
424
+ "$ref": "#/$defs/successResponse",
425
+ "type": "object",
426
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
427
+ "properties": { "body": { "$ref": "#/$defs/listTypesResult" } }
428
+ },
429
+ "startResponse": {
430
+ "oneOf": [{ "$ref": "#/$defs/startSuccessResponse" }, { "$ref": "#/$defs/errorResponse" }]
431
+ },
432
+ "startSuccessResponse": {
433
+ "$ref": "#/$defs/successResponse",
434
+ "type": "object",
435
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
436
+ "properties": { "body": { "$ref": "#/$defs/startResult" } }
437
+ },
438
+ "planSaveResponse": {
439
+ "oneOf": [{ "$ref": "#/$defs/planSaveSuccessResponse" }, { "$ref": "#/$defs/errorResponse" }]
440
+ },
441
+ "planSaveSuccessResponse": {
442
+ "$ref": "#/$defs/successResponse",
443
+ "type": "object",
444
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
445
+ "properties": { "body": { "$ref": "#/$defs/planSaveResult" } }
446
+ },
447
+ "saveItemResponse": {
448
+ "oneOf": [{ "$ref": "#/$defs/saveItemSuccessResponse" }, { "$ref": "#/$defs/errorResponse" }]
449
+ },
450
+ "saveItemSuccessResponse": {
451
+ "$ref": "#/$defs/successResponse",
452
+ "type": "object",
453
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
454
+ "properties": { "body": { "$ref": "#/$defs/saveItemResult" } }
455
+ },
456
+ "saveNewTypeVersionResponse": {
457
+ "oneOf": [
458
+ { "$ref": "#/$defs/saveNewTypeVersionSuccessResponse" },
459
+ { "$ref": "#/$defs/errorResponse" }
460
+ ]
461
+ },
462
+ "saveNewTypeVersionSuccessResponse": {
463
+ "$ref": "#/$defs/successResponse",
464
+ "type": "object",
465
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
466
+ "properties": { "body": { "$ref": "#/$defs/saveNewTypeVersionResult" } }
467
+ },
468
+ "saveAsNewTypeResponse": {
469
+ "oneOf": [
470
+ { "$ref": "#/$defs/saveAsNewTypeSuccessResponse" },
471
+ { "$ref": "#/$defs/errorResponse" }
472
+ ]
473
+ },
474
+ "saveAsNewTypeSuccessResponse": {
475
+ "$ref": "#/$defs/successResponse",
476
+ "type": "object",
477
+ "propertyNames": { "$ref": "common.schema.json#/$defs/safeJsonMemberName" },
478
+ "properties": { "body": { "$ref": "#/$defs/saveAsNewTypeResult" } }
479
+ },
480
+ "successResponse": {
481
+ "type": "object",
482
+ "additionalProperties": false,
483
+ "required": ["status", "body"],
484
+ "properties": {
485
+ "status": { "const": 200 },
486
+ "body": { "$ref": "host-result.schema.json" }
487
+ }
488
+ },
489
+ "errorResponse": {
490
+ "oneOf": [
491
+ {
492
+ "type": "object",
493
+ "additionalProperties": false,
494
+ "required": ["status", "body"],
495
+ "properties": {
496
+ "status": {
497
+ "enum": [400, 401, 403, 404, 409, 413, 422, 429, 500, 502, 503, 504]
498
+ },
499
+ "body": { "$ref": "host-error.schema.json" }
500
+ }
501
+ }
502
+ ]
503
+ }
504
+ }
505
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.kumwe.org/studio/v1/authoring-message-catalog.schema.json",
4
+ "title": "Studio authoring message catalog",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["$schema", "kind", "contractVersion", "catalogVersion", "locale", "messages"],
8
+ "properties": {
9
+ "$schema": {
10
+ "const": "https://schemas.kumwe.org/studio/v1/authoring-message-catalog.schema.json"
11
+ },
12
+ "kind": { "const": "authoring-message-catalog" },
13
+ "contractVersion": { "$ref": "common.schema.json#/$defs/contractVersion" },
14
+ "catalogVersion": { "$ref": "common.schema.json#/$defs/semanticVersion" },
15
+ "locale": { "$ref": "common.schema.json#/$defs/locale" },
16
+ "messages": {
17
+ "type": "object",
18
+ "minProperties": 1,
19
+ "maxProperties": 1000,
20
+ "propertyNames": { "$ref": "common.schema.json#/$defs/qualifiedName" },
21
+ "additionalProperties": { "$ref": "#/$defs/message" }
22
+ }
23
+ },
24
+ "$defs": {
25
+ "message": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["defaultMessage", "parameters"],
29
+ "properties": {
30
+ "defaultMessage": {
31
+ "type": "string",
32
+ "minLength": 1,
33
+ "maxLength": 2000,
34
+ "pattern": "^[^<>]*(?![\\s\\S])"
35
+ },
36
+ "parameters": {
37
+ "type": "array",
38
+ "maxItems": 50,
39
+ "uniqueItems": true,
40
+ "items": { "$ref": "common.schema.json#/$defs/localName" }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }