@mdbase-dev/connect-protocol 0.1.0-beta.100

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 (51) hide show
  1. package/LICENSE +21 -0
  2. package/dist/application-authorization.d.ts +32 -0
  3. package/dist/application-authorization.js +207 -0
  4. package/dist/capabilities.d.ts +73 -0
  5. package/dist/capabilities.js +92 -0
  6. package/dist/collection-setup.d.ts +90 -0
  7. package/dist/collection-setup.js +1 -0
  8. package/dist/compatibility.d.ts +37 -0
  9. package/dist/compatibility.js +65 -0
  10. package/dist/connect-problems.generated.d.ts +1388 -0
  11. package/dist/connect-problems.generated.js +574 -0
  12. package/dist/files.d.ts +269 -0
  13. package/dist/files.js +426 -0
  14. package/dist/index.d.ts +878 -0
  15. package/dist/index.js +94 -0
  16. package/dist/manifest.d.ts +62 -0
  17. package/dist/manifest.js +527 -0
  18. package/dist/mutation-fingerprint.d.ts +6 -0
  19. package/dist/mutation-fingerprint.js +116 -0
  20. package/dist/operations.d.ts +15 -0
  21. package/dist/operations.js +194 -0
  22. package/dist/type-packs.d.ts +133 -0
  23. package/dist/type-packs.js +30 -0
  24. package/package.json +42 -0
  25. package/schemas/application-capability-catalog.v1.json +40 -0
  26. package/schemas/application-capability-catalog.v2.json +68 -0
  27. package/schemas/catalog.json +17 -0
  28. package/schemas/connect-problem.v1.schema.json +5132 -0
  29. package/schemas/connect-problems.v1.catalog.json +351 -0
  30. package/schemas/connect-protocol.v1.schema.json +800 -0
  31. package/schemas/data-contract.schema.json +163 -0
  32. package/schemas/encrypted-relay.v1.schema.json +63 -0
  33. package/schemas/encrypted-relay.v2.schema.json +63 -0
  34. package/schemas/encrypted-relay.v3.schema.json +64 -0
  35. package/schemas/files.v1.schema.json +507 -0
  36. package/schemas/interop/v0.1/action-cancellation.schema.json +6 -0
  37. package/schemas/interop/v0.1/action-invocation.schema.json +6 -0
  38. package/schemas/interop/v0.1/action-outcome.schema.json +6 -0
  39. package/schemas/interop/v0.1/action-provider-declaration.schema.json +6 -0
  40. package/schemas/interop/v0.1/action-request.schema.json +6 -0
  41. package/schemas/interop/v0.1/conformance-claim.schema.json +6 -0
  42. package/schemas/interop/v0.1/event-source-declaration.schema.json +6 -0
  43. package/schemas/interop/v0.1/event.schema.json +6 -0
  44. package/schemas/interop/v0.1/profile.schema.json +456 -0
  45. package/schemas/mdbase-app.legacy-v1.schema.json +405 -0
  46. package/schemas/mdbase-app.schema.json +381 -0
  47. package/schemas/mdbase-query.v0.3.schema.json +171 -0
  48. package/schemas/notification-webhook.v1.schema.json +56 -0
  49. package/schemas/operation-catalog.v1.json +42 -0
  50. package/schemas/operation-mutation-classification.v1.json +537 -0
  51. package/schemas/sync.v1.schema.json +483 -0
@@ -0,0 +1,483 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mdbase.dev/connect/schemas/sync.v1.json",
4
+ "title": "mdbase connect replication protocol 1",
5
+ "oneOf": [
6
+ { "$ref": "#/$defs/session" },
7
+ { "$ref": "#/$defs/snapshotPage" },
8
+ { "$ref": "#/$defs/fileSnapshotPage" },
9
+ { "$ref": "#/$defs/changesPage" },
10
+ { "$ref": "#/$defs/mutation" },
11
+ { "$ref": "#/$defs/receipt" }
12
+ ],
13
+ "$defs": {
14
+ "uuid": { "type": "string", "format": "uuid" },
15
+ "semanticVersion": {
16
+ "type": "string",
17
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$"
18
+ },
19
+ "digest": {
20
+ "type": "string",
21
+ "pattern": "^sha256:[0-9a-f]{64}$"
22
+ },
23
+ "fileDescriptor": {
24
+ "$ref": "https://mdbase.dev/connect/schemas/files.v1.json#/$defs/fileDescriptor"
25
+ },
26
+ "collectionType": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["name", "schema", "extensions"],
30
+ "properties": {
31
+ "name": { "type": "string", "minLength": 1 },
32
+ "version": { "type": "integer", "minimum": 1 },
33
+ "description": { "type": "string" },
34
+ "schema": { "type": "object" },
35
+ "collection": { "type": "object" },
36
+ "lifecycle": { "type": "object" },
37
+ "extensions": { "type": "object" }
38
+ }
39
+ },
40
+ "contract": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": ["contract_type", "id", "version", "digest", "schema", "implementations"],
44
+ "properties": {
45
+ "contract_type": { "const": "record" },
46
+ "id": { "type": "string", "minLength": 1 },
47
+ "version": { "$ref": "#/$defs/semanticVersion" },
48
+ "digest": { "$ref": "#/$defs/digest" },
49
+ "schema": { "type": "object" },
50
+ "binding_schema": { "type": "object" },
51
+ "implementations": {
52
+ "type": "array",
53
+ "minItems": 1,
54
+ "items": { "$ref": "#/$defs/contractImplementation" }
55
+ }
56
+ }
57
+ },
58
+ "contractImplementation": {
59
+ "type": "object",
60
+ "additionalProperties": false,
61
+ "required": ["type_name", "type_version", "digest", "fields"],
62
+ "properties": {
63
+ "type_name": { "type": "string", "minLength": 1 },
64
+ "type_version": { "type": "integer", "minimum": 1 },
65
+ "type_path": { "type": "string", "minLength": 1 },
66
+ "digest": { "$ref": "#/$defs/digest" },
67
+ "fields": {
68
+ "type": "object",
69
+ "additionalProperties": { "type": "string", "minLength": 1 }
70
+ },
71
+ "binding": { "type": "object" }
72
+ }
73
+ },
74
+ "resources": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "required": ["revision", "spec_version", "types", "contracts"],
78
+ "properties": {
79
+ "revision": { "type": "string", "minLength": 1 },
80
+ "spec_version": { "type": "string", "minLength": 1 },
81
+ "types": { "type": "array", "items": { "$ref": "#/$defs/collectionType" } },
82
+ "contracts": { "type": "array", "items": { "$ref": "#/$defs/contract" } },
83
+ "documents": { "type": "array", "items": { "$ref": "#/$defs/resourceDocument" } }
84
+ }
85
+ },
86
+ "resourceDocument": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": ["path", "kind", "revision", "document"],
90
+ "properties": {
91
+ "path": { "type": "string", "minLength": 1 },
92
+ "kind": { "enum": ["configuration", "lock", "type", "contract", "schema", "view"] },
93
+ "revision": { "$ref": "#/$defs/digest" },
94
+ "document": { "type": "string" }
95
+ }
96
+ },
97
+ "record": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["record_id", "path", "document", "revision", "frontmatter", "body", "types"],
101
+ "properties": {
102
+ "record_id": { "$ref": "#/$defs/uuid" },
103
+ "path": { "type": "string", "minLength": 1 },
104
+ "document": { "type": "string" },
105
+ "revision": { "$ref": "#/$defs/digest" },
106
+ "frontmatter": { "type": "object" },
107
+ "body": { "type": "string" },
108
+ "types": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
109
+ }
110
+ },
111
+ "snapshotRecord": {
112
+ "type": "object",
113
+ "additionalProperties": false,
114
+ "required": ["record_id", "path", "document", "revision", "frontmatter", "body", "types"],
115
+ "properties": {
116
+ "record_id": { "$ref": "#/$defs/uuid" },
117
+ "path": { "type": "string", "minLength": 1 },
118
+ "revision": { "$ref": "#/$defs/digest" },
119
+ "frontmatter": { "type": "object" },
120
+ "body": { "type": "string" },
121
+ "types": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
122
+ "document": { "type": "string" }
123
+ }
124
+ },
125
+ "session": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": ["protocol_version", "protocol_profile", "session_id", "replica_id", "collection_id", "mode", "scope_epoch", "retained_after", "head", "snapshot_id", "resources"],
129
+ "properties": {
130
+ "protocol_version": { "const": 1 },
131
+ "protocol_profile": { "const": "exact_document_v1" },
132
+ "session_id": { "$ref": "#/$defs/uuid" },
133
+ "replica_id": { "$ref": "#/$defs/uuid" },
134
+ "collection_id": { "$ref": "#/$defs/uuid" },
135
+ "mode": { "enum": ["read_only", "read_write"] },
136
+ "scope_epoch": { "type": "integer", "minimum": 1 },
137
+ "retained_after": { "type": "integer", "minimum": 0 },
138
+ "head": { "type": "integer", "minimum": 0 },
139
+ "snapshot_id": { "$ref": "#/$defs/uuid" },
140
+ "resources": { "$ref": "#/$defs/resources" }
141
+ }
142
+ },
143
+ "snapshotPage": {
144
+ "type": "object",
145
+ "additionalProperties": false,
146
+ "required": ["protocol_version", "snapshot_id", "scope_epoch", "cursor", "records"],
147
+ "properties": {
148
+ "protocol_version": { "const": 1 },
149
+ "snapshot_id": { "$ref": "#/$defs/uuid" },
150
+ "scope_epoch": { "type": "integer", "minimum": 1 },
151
+ "cursor": { "type": "integer", "minimum": 0 },
152
+ "records": { "type": "array", "items": { "$ref": "#/$defs/snapshotRecord" } },
153
+ "next_page": { "type": "string", "pattern": "^[1-9][0-9]*$" }
154
+ }
155
+ },
156
+ "fileSnapshotPage": {
157
+ "type": "object",
158
+ "additionalProperties": false,
159
+ "required": ["protocol_version", "type", "snapshot_id", "scope_epoch", "cursor", "files"],
160
+ "properties": {
161
+ "protocol_version": { "const": 1 },
162
+ "type": { "const": "file_snapshot_page" },
163
+ "snapshot_id": { "$ref": "#/$defs/uuid" },
164
+ "scope_epoch": { "type": "integer", "minimum": 1 },
165
+ "cursor": { "type": "integer", "minimum": 0 },
166
+ "files": { "type": "array", "items": { "$ref": "#/$defs/fileDescriptor" } },
167
+ "next_page": { "type": "string", "pattern": "^[1-9][0-9]*$" }
168
+ }
169
+ },
170
+ "put": {
171
+ "type": "object",
172
+ "additionalProperties": false,
173
+ "required": ["sequence", "type", "record"],
174
+ "properties": {
175
+ "sequence": { "type": "integer", "minimum": 1 },
176
+ "type": { "const": "put" },
177
+ "record": { "$ref": "#/$defs/record" }
178
+ }
179
+ },
180
+ "remove": {
181
+ "type": "object",
182
+ "additionalProperties": false,
183
+ "required": ["sequence", "type", "record_id", "previous_path", "revision"],
184
+ "properties": {
185
+ "sequence": { "type": "integer", "minimum": 1 },
186
+ "type": { "const": "remove" },
187
+ "record_id": { "$ref": "#/$defs/uuid" },
188
+ "previous_path": { "type": "string", "minLength": 1 },
189
+ "revision": { "type": "string", "minLength": 1 }
190
+ }
191
+ },
192
+ "filePut": {
193
+ "type": "object",
194
+ "additionalProperties": false,
195
+ "required": ["sequence", "type", "file"],
196
+ "properties": {
197
+ "sequence": { "type": "integer", "minimum": 1 },
198
+ "type": { "const": "file_put" },
199
+ "file": { "$ref": "#/$defs/fileDescriptor" }
200
+ }
201
+ },
202
+ "fileRemove": {
203
+ "type": "object",
204
+ "additionalProperties": false,
205
+ "required": ["sequence", "type", "file_id", "previous_path", "revision"],
206
+ "properties": {
207
+ "sequence": { "type": "integer", "minimum": 1 },
208
+ "type": { "const": "file_remove" },
209
+ "file_id": { "$ref": "#/$defs/uuid" },
210
+ "previous_path": { "type": "string", "minLength": 1 },
211
+ "revision": { "type": "string", "minLength": 1 }
212
+ }
213
+ },
214
+ "changesPage": {
215
+ "type": "object",
216
+ "additionalProperties": false,
217
+ "required": ["protocol_version", "scope_epoch", "events", "cursor", "head", "has_more", "reset_required"],
218
+ "properties": {
219
+ "protocol_version": { "const": 1 },
220
+ "scope_epoch": { "type": "integer", "minimum": 1 },
221
+ "events": {
222
+ "type": "array",
223
+ "items": {
224
+ "oneOf": [
225
+ { "$ref": "#/$defs/put" },
226
+ { "$ref": "#/$defs/remove" },
227
+ { "$ref": "#/$defs/filePut" },
228
+ { "$ref": "#/$defs/fileRemove" }
229
+ ]
230
+ }
231
+ },
232
+ "cursor": { "type": "integer", "minimum": 0 },
233
+ "head": { "type": "integer", "minimum": 0 },
234
+ "has_more": { "type": "boolean" },
235
+ "reset_required": { "type": "boolean" }
236
+ }
237
+ },
238
+ "recordPutMutation": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": ["mutation_id", "replica_id", "scope_epoch", "operation", "record_id", "path", "document", "created_at"],
242
+ "properties": {
243
+ "mutation_id": { "$ref": "#/$defs/uuid" },
244
+ "replica_id": { "$ref": "#/$defs/uuid" },
245
+ "scope_epoch": { "type": "integer", "minimum": 1 },
246
+ "operation": { "const": "put" },
247
+ "record_id": { "$ref": "#/$defs/uuid" },
248
+ "base_revision": { "type": "string", "minLength": 1 },
249
+ "path": { "type": "string", "minLength": 1 },
250
+ "document": { "type": "string" },
251
+ "created_at": { "type": "string", "format": "date-time" },
252
+ "causal_predecessor": { "$ref": "#/$defs/uuid" }
253
+ }
254
+ },
255
+ "recordDeleteMutation": {
256
+ "type": "object",
257
+ "additionalProperties": false,
258
+ "required": ["mutation_id", "replica_id", "scope_epoch", "operation", "record_id", "base_revision", "created_at"],
259
+ "properties": {
260
+ "mutation_id": { "$ref": "#/$defs/uuid" },
261
+ "replica_id": { "$ref": "#/$defs/uuid" },
262
+ "scope_epoch": { "type": "integer", "minimum": 1 },
263
+ "operation": { "const": "delete" },
264
+ "record_id": { "$ref": "#/$defs/uuid" },
265
+ "base_revision": { "type": "string", "minLength": 1 },
266
+ "created_at": { "type": "string", "format": "date-time" },
267
+ "causal_predecessor": { "$ref": "#/$defs/uuid" }
268
+ }
269
+ },
270
+ "recordMoveMutation": {
271
+ "type": "object",
272
+ "additionalProperties": false,
273
+ "required": ["mutation_id", "replica_id", "scope_epoch", "operation", "record_id", "base_revision", "path", "created_at"],
274
+ "properties": {
275
+ "mutation_id": { "$ref": "#/$defs/uuid" },
276
+ "replica_id": { "$ref": "#/$defs/uuid" },
277
+ "scope_epoch": { "type": "integer", "minimum": 1 },
278
+ "operation": { "const": "move" },
279
+ "record_id": { "$ref": "#/$defs/uuid" },
280
+ "base_revision": { "type": "string", "minLength": 1 },
281
+ "path": { "type": "string", "minLength": 1 },
282
+ "created_at": { "type": "string", "format": "date-time" },
283
+ "causal_predecessor": { "$ref": "#/$defs/uuid" }
284
+ }
285
+ },
286
+ "filePutMutation": {
287
+ "type": "object",
288
+ "additionalProperties": false,
289
+ "required": [
290
+ "mutation_id", "replica_id", "scope_epoch", "operation", "file_id",
291
+ "path", "transfer_id", "content_digest", "size", "created_at"
292
+ ],
293
+ "properties": {
294
+ "mutation_id": { "$ref": "#/$defs/uuid" },
295
+ "replica_id": { "$ref": "#/$defs/uuid" },
296
+ "scope_epoch": { "type": "integer", "minimum": 1 },
297
+ "operation": { "const": "file_put" },
298
+ "file_id": { "$ref": "#/$defs/uuid" },
299
+ "base_revision": { "type": "string", "minLength": 1 },
300
+ "path": { "type": "string", "minLength": 1 },
301
+ "transfer_id": { "$ref": "#/$defs/uuid" },
302
+ "content_digest": { "$ref": "#/$defs/digest" },
303
+ "size": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
304
+ "media_type": { "type": "string", "minLength": 1, "maxLength": 255 },
305
+ "created_at": { "type": "string", "format": "date-time" },
306
+ "causal_predecessor": { "$ref": "#/$defs/uuid" }
307
+ }
308
+ },
309
+ "fileMoveMutation": {
310
+ "type": "object",
311
+ "additionalProperties": false,
312
+ "required": [
313
+ "mutation_id", "replica_id", "scope_epoch", "operation", "file_id",
314
+ "base_revision", "path", "update_references", "created_at"
315
+ ],
316
+ "properties": {
317
+ "mutation_id": { "$ref": "#/$defs/uuid" },
318
+ "replica_id": { "$ref": "#/$defs/uuid" },
319
+ "scope_epoch": { "type": "integer", "minimum": 1 },
320
+ "operation": { "const": "file_move" },
321
+ "file_id": { "$ref": "#/$defs/uuid" },
322
+ "base_revision": { "type": "string", "minLength": 1 },
323
+ "path": { "type": "string", "minLength": 1 },
324
+ "update_references": { "type": "boolean" },
325
+ "created_at": { "type": "string", "format": "date-time" },
326
+ "causal_predecessor": { "$ref": "#/$defs/uuid" }
327
+ }
328
+ },
329
+ "fileDeleteMutation": {
330
+ "type": "object",
331
+ "additionalProperties": false,
332
+ "required": [
333
+ "mutation_id", "replica_id", "scope_epoch", "operation", "file_id",
334
+ "base_revision", "created_at"
335
+ ],
336
+ "properties": {
337
+ "mutation_id": { "$ref": "#/$defs/uuid" },
338
+ "replica_id": { "$ref": "#/$defs/uuid" },
339
+ "scope_epoch": { "type": "integer", "minimum": 1 },
340
+ "operation": { "const": "file_delete" },
341
+ "file_id": { "$ref": "#/$defs/uuid" },
342
+ "base_revision": { "type": "string", "minLength": 1 },
343
+ "created_at": { "type": "string", "format": "date-time" },
344
+ "causal_predecessor": { "$ref": "#/$defs/uuid" }
345
+ }
346
+ },
347
+ "mutation": {
348
+ "oneOf": [
349
+ { "$ref": "#/$defs/recordPutMutation" },
350
+ { "$ref": "#/$defs/recordMoveMutation" },
351
+ { "$ref": "#/$defs/recordDeleteMutation" },
352
+ { "$ref": "#/$defs/filePutMutation" },
353
+ { "$ref": "#/$defs/fileMoveMutation" },
354
+ { "$ref": "#/$defs/fileDeleteMutation" }
355
+ ]
356
+ },
357
+ "recordReceipt": {
358
+ "oneOf": [
359
+ {
360
+ "type": "object",
361
+ "additionalProperties": false,
362
+ "required": ["mutation_id", "status", "sequence"],
363
+ "properties": {
364
+ "mutation_id": { "$ref": "#/$defs/uuid" },
365
+ "status": { "enum": ["applied", "previously_applied"] },
366
+ "sequence": { "type": "integer", "minimum": 1 },
367
+ "record": { "$ref": "#/$defs/record" }
368
+ }
369
+ },
370
+ {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "required": ["mutation_id", "status", "conflict"],
374
+ "properties": {
375
+ "mutation_id": { "$ref": "#/$defs/uuid" },
376
+ "status": { "const": "conflicted" },
377
+ "conflict": {
378
+ "type": "object",
379
+ "additionalProperties": false,
380
+ "required": ["record_id", "mutation"],
381
+ "properties": {
382
+ "record_id": { "$ref": "#/$defs/uuid" },
383
+ "mutation": {
384
+ "oneOf": [
385
+ { "$ref": "#/$defs/recordPutMutation" },
386
+ { "$ref": "#/$defs/recordMoveMutation" },
387
+ { "$ref": "#/$defs/recordDeleteMutation" }
388
+ ]
389
+ },
390
+ "current": { "$ref": "#/$defs/record" },
391
+ "current_revision": { "type": "string" }
392
+ }
393
+ }
394
+ }
395
+ },
396
+ {
397
+ "type": "object",
398
+ "additionalProperties": false,
399
+ "required": ["mutation_id", "status", "error"],
400
+ "properties": {
401
+ "mutation_id": { "$ref": "#/$defs/uuid" },
402
+ "status": { "const": "rejected" },
403
+ "error": {
404
+ "type": "object",
405
+ "additionalProperties": false,
406
+ "required": ["code", "message"],
407
+ "properties": {
408
+ "code": { "type": "string", "minLength": 1 },
409
+ "message": { "type": "string" }
410
+ }
411
+ }
412
+ }
413
+ }
414
+ ]
415
+ },
416
+ "fileConflict": {
417
+ "type": "object",
418
+ "additionalProperties": false,
419
+ "required": ["file_id", "mutation"],
420
+ "properties": {
421
+ "file_id": { "$ref": "#/$defs/uuid" },
422
+ "mutation": {
423
+ "oneOf": [
424
+ { "$ref": "#/$defs/filePutMutation" },
425
+ { "$ref": "#/$defs/fileMoveMutation" },
426
+ { "$ref": "#/$defs/fileDeleteMutation" }
427
+ ]
428
+ },
429
+ "current": { "$ref": "#/$defs/fileDescriptor" },
430
+ "current_revision": { "type": "string", "minLength": 1 }
431
+ }
432
+ },
433
+ "fileReceipt": {
434
+ "oneOf": [
435
+ {
436
+ "type": "object",
437
+ "additionalProperties": false,
438
+ "required": ["mutation_id", "status", "sequence"],
439
+ "properties": {
440
+ "mutation_id": { "$ref": "#/$defs/uuid" },
441
+ "status": { "enum": ["file_applied", "file_previously_applied"] },
442
+ "sequence": { "type": "integer", "minimum": 1 },
443
+ "file": { "$ref": "#/$defs/fileDescriptor" }
444
+ }
445
+ },
446
+ {
447
+ "type": "object",
448
+ "additionalProperties": false,
449
+ "required": ["mutation_id", "status", "conflict"],
450
+ "properties": {
451
+ "mutation_id": { "$ref": "#/$defs/uuid" },
452
+ "status": { "const": "file_conflicted" },
453
+ "conflict": { "$ref": "#/$defs/fileConflict" }
454
+ }
455
+ },
456
+ {
457
+ "type": "object",
458
+ "additionalProperties": false,
459
+ "required": ["mutation_id", "status", "error"],
460
+ "properties": {
461
+ "mutation_id": { "$ref": "#/$defs/uuid" },
462
+ "status": { "const": "file_rejected" },
463
+ "error": {
464
+ "type": "object",
465
+ "additionalProperties": false,
466
+ "required": ["code", "message"],
467
+ "properties": {
468
+ "code": { "type": "string", "minLength": 1 },
469
+ "message": { "type": "string" }
470
+ }
471
+ }
472
+ }
473
+ }
474
+ ]
475
+ },
476
+ "receipt": {
477
+ "oneOf": [
478
+ { "$ref": "#/$defs/recordReceipt" },
479
+ { "$ref": "#/$defs/fileReceipt" }
480
+ ]
481
+ }
482
+ }
483
+ }