@asterdoc/schemas 0.0.0-stage → 0.9.0

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 (42) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +76 -2
  3. package/dist/index.d.ts +3040 -0
  4. package/dist/index.js +2096 -0
  5. package/package.json +82 -3
  6. package/schemas/2026-10-28/address.json +53 -0
  7. package/schemas/2026-10-28/attachment.json +31 -0
  8. package/schemas/2026-10-28/bbox.json +22 -0
  9. package/schemas/2026-10-28/bundle-content-item.json +122 -0
  10. package/schemas/2026-10-28/bundle.json +267 -0
  11. package/schemas/2026-10-28/checklist-item.json +113 -0
  12. package/schemas/2026-10-28/checklist.json +300 -0
  13. package/schemas/2026-10-28/cond-expr.json +18 -0
  14. package/schemas/2026-10-28/content-ref.json +76 -0
  15. package/schemas/2026-10-28/coordinate.json +26 -0
  16. package/schemas/2026-10-28/defs-section.json +862 -0
  17. package/schemas/2026-10-28/document.json +292 -0
  18. package/schemas/2026-10-28/duration.json +8 -0
  19. package/schemas/2026-10-28/fieldset-field.json +49 -0
  20. package/schemas/2026-10-28/form-annex.json +33 -0
  21. package/schemas/2026-10-28/form-field.json +1037 -0
  22. package/schemas/2026-10-28/form-party.json +150 -0
  23. package/schemas/2026-10-28/form.json +369 -0
  24. package/schemas/2026-10-28/identification.json +44 -0
  25. package/schemas/2026-10-28/layer.json +556 -0
  26. package/schemas/2026-10-28/list-field.json +51 -0
  27. package/schemas/2026-10-28/metadata.json +35 -0
  28. package/schemas/2026-10-28/money.json +25 -0
  29. package/schemas/2026-10-28/organization.json +49 -0
  30. package/schemas/2026-10-28/person.json +49 -0
  31. package/schemas/2026-10-28/phone.json +32 -0
  32. package/schemas/2026-10-28/rule-severity.json +11 -0
  33. package/schemas/2026-10-28/rules-section.json +46 -0
  34. package/schemas/2026-10-28/signature.json +68 -0
  35. package/schemas/2026-10-28/validation-rule.json +34 -0
  36. package/schemas/2026-10-28.json +4636 -0
  37. package/schemas/config.json +174 -0
  38. package/schemas/lock.json +151 -0
  39. package/schemas/manifest.json +184 -0
  40. package/schemas/registry-item.json +488 -0
  41. package/schemas/registry.json +281 -0
  42. package/schemas/schema.json +4636 -0
@@ -0,0 +1,4636 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schema.asterdoc.com/schema.json",
4
+ "title": "Asterdoc Schema",
5
+ "description": "Asterdoc JSON Schema specification (latest version)",
6
+ "$ref": "#/$defs/Asterdoc",
7
+ "$defs": {
8
+ "FieldsetField": {
9
+ "type": "object",
10
+ "properties": {
11
+ "label": {
12
+ "type": "string",
13
+ "minLength": 1,
14
+ "maxLength": 200,
15
+ "description": "Display label for the field"
16
+ },
17
+ "description": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 1000,
21
+ "description": "Description or help text for the field"
22
+ },
23
+ "required": {
24
+ "$ref": "#/$defs/CondExpr"
25
+ },
26
+ "visible": {
27
+ "$ref": "#/$defs/CondExpr"
28
+ },
29
+ "type": {
30
+ "type": "string",
31
+ "const": "fieldset"
32
+ },
33
+ "fields": {
34
+ "type": "object",
35
+ "propertyNames": {
36
+ "type": "string",
37
+ "minLength": 1,
38
+ "maxLength": 100,
39
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
40
+ "description": "Nested field identifier (camelCase, starts with lowercase letter)"
41
+ },
42
+ "additionalProperties": {
43
+ "$ref": "#/$defs/FormField"
44
+ }
45
+ }
46
+ },
47
+ "required": [
48
+ "type",
49
+ "fields"
50
+ ],
51
+ "additionalProperties": false,
52
+ "title": "FieldsetField",
53
+ "description": "Field that groups nested fields under one key"
54
+ },
55
+ "ListField": {
56
+ "type": "object",
57
+ "properties": {
58
+ "label": {
59
+ "type": "string",
60
+ "minLength": 1,
61
+ "maxLength": 200,
62
+ "description": "Display label for the field"
63
+ },
64
+ "description": {
65
+ "type": "string",
66
+ "minLength": 1,
67
+ "maxLength": 1000,
68
+ "description": "Description or help text for the field"
69
+ },
70
+ "required": {
71
+ "$ref": "#/$defs/CondExpr"
72
+ },
73
+ "visible": {
74
+ "$ref": "#/$defs/CondExpr"
75
+ },
76
+ "type": {
77
+ "type": "string",
78
+ "const": "list"
79
+ },
80
+ "item": {
81
+ "$ref": "#/$defs/FormField"
82
+ },
83
+ "minItems": {
84
+ "type": "integer",
85
+ "minimum": 0,
86
+ "maximum": 9007199254740991,
87
+ "description": "Minimum number of items"
88
+ },
89
+ "maxItems": {
90
+ "type": "integer",
91
+ "minimum": 0,
92
+ "maximum": 9007199254740991,
93
+ "description": "Maximum number of items"
94
+ }
95
+ },
96
+ "required": [
97
+ "type",
98
+ "item"
99
+ ],
100
+ "additionalProperties": false,
101
+ "title": "ListField",
102
+ "description": "Field that holds a list of items, each shaped by the item field"
103
+ },
104
+ "Form": {
105
+ "type": "object",
106
+ "properties": {
107
+ "$schema": {
108
+ "type": "string",
109
+ "format": "uri",
110
+ "description": "JSON Schema URI for this artifact instance."
111
+ },
112
+ "name": {
113
+ "type": "string",
114
+ "minLength": 1,
115
+ "maxLength": 128,
116
+ "pattern": "^[A-Za-z0-9]([A-Za-z0-9]|-[A-Za-z0-9])*$",
117
+ "description": "Artifact identifier. Must start with a letter or digit, can contain letters, numbers, and hyphens (no leading/trailing/consecutive hyphens). Every edition of one artifact shares the same name."
118
+ },
119
+ "version": {
120
+ "type": "string",
121
+ "minLength": 1,
122
+ "maxLength": 200,
123
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
124
+ "description": "Artifact version (SemVer 2.0.0, such as 1.2.3 or 1.3.0-beta.1). It counts the publisher's own changes, never the issuer's edition; each edition has its own version line. Required for publishing to registry."
125
+ },
126
+ "title": {
127
+ "type": "string",
128
+ "minLength": 1,
129
+ "maxLength": 200,
130
+ "description": "Human-readable title. Recommended for published/shared artifacts and directory browsing."
131
+ },
132
+ "description": {
133
+ "type": "string",
134
+ "minLength": 0,
135
+ "maxLength": 2000,
136
+ "description": "Detailed description or context for the artifact."
137
+ },
138
+ "code": {
139
+ "type": "string",
140
+ "minLength": 1,
141
+ "maxLength": 200,
142
+ "description": "The form number as printed by its issuer, such as W-9 or ACORD 25, or a self-issued form's own number."
143
+ },
144
+ "issuer": {
145
+ "type": "string",
146
+ "minLength": 1,
147
+ "maxLength": 200,
148
+ "description": "The organization that issues the form, such as U.S. Internal Revenue Service."
149
+ },
150
+ "edition": {
151
+ "type": "object",
152
+ "properties": {
153
+ "key": {
154
+ "type": "string",
155
+ "minLength": 1,
156
+ "maxLength": 64,
157
+ "pattern": "^(?!(?:current|latest|editions|tags|diff)$)[a-z0-9]([a-z0-9]|-[a-z0-9])*$",
158
+ "description": "Stable edition identifier, unique among the editions of one artifact (for example 2024-03 or 3b). Lowercase letters and digits with single hyphens, and not current, latest, editions, tags or diff. It is the edition segment of a coordinate such as @org/repo/w-9/2024-03 and never changes once published."
159
+ },
160
+ "label": {
161
+ "type": "string",
162
+ "minLength": 1,
163
+ "maxLength": 200,
164
+ "description": "The issuer's edition text exactly as printed, such as \"Rev. March 2024\". For display only."
165
+ },
166
+ "date": {
167
+ "type": "string",
168
+ "pattern": "^(?:\\d{4}(?:-(?:0[1-9]|1[0-2]))?|(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8]))))$",
169
+ "description": "When the issuer released the edition, at the precision the issuer gives: YYYY, YYYY-MM or YYYY-MM-DD."
170
+ },
171
+ "effectiveFrom": {
172
+ "type": "string",
173
+ "format": "date",
174
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
175
+ "description": "The date the edition takes effect. Only when the issuer prints one."
176
+ }
177
+ },
178
+ "required": [
179
+ "key",
180
+ "label"
181
+ ],
182
+ "additionalProperties": false,
183
+ "title": "ArtifactEdition",
184
+ "description": "The issuer's edition this artifact encodes. Omitted for artifacts that are not issued in editions."
185
+ },
186
+ "language": {
187
+ "type": "string",
188
+ "minLength": 2,
189
+ "maxLength": 35,
190
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
191
+ "description": "BCP 47-style source language tag for this artifact. Defaults to en when omitted."
192
+ },
193
+ "metadata": {
194
+ "description": "Custom key-value pairs for storing domain-specific or organizational metadata",
195
+ "$ref": "#/$defs/Metadata"
196
+ },
197
+ "instructions": {
198
+ "oneOf": [
199
+ {
200
+ "type": "object",
201
+ "properties": {
202
+ "kind": {
203
+ "type": "string",
204
+ "const": "inline"
205
+ },
206
+ "text": {
207
+ "type": "string",
208
+ "minLength": 1,
209
+ "maxLength": 1000000,
210
+ "description": "Inline text content"
211
+ }
212
+ },
213
+ "required": [
214
+ "kind",
215
+ "text"
216
+ ],
217
+ "additionalProperties": false,
218
+ "title": "InlineContentRef",
219
+ "description": "Inline content reference with embedded text"
220
+ },
221
+ {
222
+ "type": "object",
223
+ "properties": {
224
+ "kind": {
225
+ "type": "string",
226
+ "const": "file"
227
+ },
228
+ "path": {
229
+ "type": "string",
230
+ "minLength": 1,
231
+ "maxLength": 1000,
232
+ "description": "Path to the content file"
233
+ },
234
+ "mimeType": {
235
+ "type": "string",
236
+ "minLength": 1,
237
+ "maxLength": 100,
238
+ "description": "MIME type of the file content"
239
+ },
240
+ "title": {
241
+ "type": "string",
242
+ "minLength": 1,
243
+ "maxLength": 200,
244
+ "description": "Human-readable title"
245
+ },
246
+ "description": {
247
+ "type": "string",
248
+ "minLength": 1,
249
+ "maxLength": 2000,
250
+ "description": "Description of the content"
251
+ },
252
+ "checksum": {
253
+ "type": "string",
254
+ "pattern": "^sha256:[a-f0-9]{64}$",
255
+ "description": "SHA-256 checksum for integrity verification"
256
+ }
257
+ },
258
+ "required": [
259
+ "kind",
260
+ "path",
261
+ "mimeType"
262
+ ],
263
+ "additionalProperties": false,
264
+ "title": "FileContentRef",
265
+ "description": "File content reference with path and metadata"
266
+ }
267
+ ],
268
+ "title": "ContentRef",
269
+ "description": "Domain or compliance reference content (e.g., IRS instructions, regulatory guidance)"
270
+ },
271
+ "agentInstructions": {
272
+ "oneOf": [
273
+ {
274
+ "type": "object",
275
+ "properties": {
276
+ "kind": {
277
+ "type": "string",
278
+ "const": "inline"
279
+ },
280
+ "text": {
281
+ "type": "string",
282
+ "minLength": 1,
283
+ "maxLength": 1000000,
284
+ "description": "Inline text content"
285
+ }
286
+ },
287
+ "required": [
288
+ "kind",
289
+ "text"
290
+ ],
291
+ "additionalProperties": false,
292
+ "title": "InlineContentRef",
293
+ "description": "Inline content reference with embedded text"
294
+ },
295
+ {
296
+ "type": "object",
297
+ "properties": {
298
+ "kind": {
299
+ "type": "string",
300
+ "const": "file"
301
+ },
302
+ "path": {
303
+ "type": "string",
304
+ "minLength": 1,
305
+ "maxLength": 1000,
306
+ "description": "Path to the content file"
307
+ },
308
+ "mimeType": {
309
+ "type": "string",
310
+ "minLength": 1,
311
+ "maxLength": 100,
312
+ "description": "MIME type of the file content"
313
+ },
314
+ "title": {
315
+ "type": "string",
316
+ "minLength": 1,
317
+ "maxLength": 200,
318
+ "description": "Human-readable title"
319
+ },
320
+ "description": {
321
+ "type": "string",
322
+ "minLength": 1,
323
+ "maxLength": 2000,
324
+ "description": "Description of the content"
325
+ },
326
+ "checksum": {
327
+ "type": "string",
328
+ "pattern": "^sha256:[a-f0-9]{64}$",
329
+ "description": "SHA-256 checksum for integrity verification"
330
+ }
331
+ },
332
+ "required": [
333
+ "kind",
334
+ "path",
335
+ "mimeType"
336
+ ],
337
+ "additionalProperties": false,
338
+ "title": "FileContentRef",
339
+ "description": "File content reference with path and metadata"
340
+ }
341
+ ],
342
+ "title": "ContentRef",
343
+ "description": "LLM/agent prompts for field ordering, grouping, tone, and presentation guidance"
344
+ },
345
+ "kind": {
346
+ "type": "string",
347
+ "const": "form"
348
+ },
349
+ "defs": {
350
+ "$ref": "#/$defs/DefsSection"
351
+ },
352
+ "rules": {
353
+ "type": "object",
354
+ "propertyNames": {
355
+ "type": "string",
356
+ "minLength": 1,
357
+ "maxLength": 100,
358
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
359
+ "description": "Validation rule identifier (camelCase, starts with lowercase letter)"
360
+ },
361
+ "additionalProperties": {
362
+ "type": "object",
363
+ "properties": {
364
+ "expr": {
365
+ "type": "string",
366
+ "minLength": 1,
367
+ "maxLength": 2000,
368
+ "description": "Boolean expression that must evaluate to true for the form to be valid. Has access to field values directly (e.g., \"ssn or ein\") and defs section values."
369
+ },
370
+ "message": {
371
+ "type": "string",
372
+ "minLength": 1,
373
+ "maxLength": 500,
374
+ "description": "Error message displayed when the rule fails (expression evaluates to false)"
375
+ },
376
+ "severity": {
377
+ "type": "string",
378
+ "enum": [
379
+ "error",
380
+ "warning"
381
+ ],
382
+ "description": "Severity level: error (default) blocks submission, warning allows but warns"
383
+ }
384
+ },
385
+ "required": [
386
+ "expr",
387
+ "message"
388
+ ],
389
+ "additionalProperties": false,
390
+ "title": "ValidationRule",
391
+ "description": "A form-level validation rule with a boolean expression and error message"
392
+ },
393
+ "title": "RulesSection",
394
+ "description": "Form-level validation rules for cross-field constraints. Rules use expressions with direct access to field values and defs section values."
395
+ },
396
+ "fields": {
397
+ "type": "object",
398
+ "propertyNames": {
399
+ "type": "string",
400
+ "minLength": 1,
401
+ "maxLength": 100,
402
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
403
+ "description": "Field identifier (camelCase, starts with lowercase letter)"
404
+ },
405
+ "additionalProperties": {
406
+ "$ref": "#/$defs/FormField"
407
+ },
408
+ "description": "Form field definitions keyed by field identifier. Fields define the input structure and validation rules for the form"
409
+ },
410
+ "layers": {
411
+ "type": "object",
412
+ "propertyNames": {
413
+ "type": "string",
414
+ "minLength": 1,
415
+ "maxLength": 100,
416
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
417
+ "description": "Layer identifier (camelCase, starts with lowercase letter)"
418
+ },
419
+ "additionalProperties": {
420
+ "$ref": "#/$defs/Layer"
421
+ },
422
+ "description": "Named layers for rendering this form into different formats. Keys are user-defined identifiers (e.g., markdown, pdf, html)"
423
+ },
424
+ "defaultLayer": {
425
+ "type": "string",
426
+ "minLength": 1,
427
+ "maxLength": 100,
428
+ "description": "Key of the default layer to use when none specified at render time"
429
+ },
430
+ "allowAdditionalAnnexes": {
431
+ "type": "boolean",
432
+ "description": "Whether additional ad-hoc annexes can be attached beyond those defined in the annexes record (default: false)"
433
+ },
434
+ "annexes": {
435
+ "type": "object",
436
+ "propertyNames": {
437
+ "type": "string",
438
+ "minLength": 1,
439
+ "maxLength": 100,
440
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
441
+ "description": "Annex identifier (camelCase, starts with lowercase letter)"
442
+ },
443
+ "additionalProperties": {
444
+ "$ref": "#/$defs/FormAnnex"
445
+ },
446
+ "description": "Predefined annex slots keyed by identifier. Each slot can be marked as required (must be filled at runtime) or optional"
447
+ },
448
+ "parties": {
449
+ "type": "object",
450
+ "propertyNames": {
451
+ "type": "string",
452
+ "minLength": 1,
453
+ "maxLength": 50,
454
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
455
+ "description": "Party role identifier (e.g., buyer, seller, landlord, buyerRepresentative)"
456
+ },
457
+ "additionalProperties": {
458
+ "$ref": "#/$defs/FormParty"
459
+ },
460
+ "description": "Party role definitions keyed by role identifier. Each role specifies constraints on who can fill it (person/organization) and signature requirements."
461
+ }
462
+ },
463
+ "required": [
464
+ "name",
465
+ "kind"
466
+ ],
467
+ "additionalProperties": false,
468
+ "title": "Form",
469
+ "description": "A form artifact that defines a data contract with field definitions, optional layers for rendering, and optional annexes. Forms are the primary artifact type for structured data collection and document generation."
470
+ },
471
+ "Document": {
472
+ "type": "object",
473
+ "properties": {
474
+ "$schema": {
475
+ "type": "string",
476
+ "format": "uri",
477
+ "description": "JSON Schema URI for this artifact instance."
478
+ },
479
+ "name": {
480
+ "type": "string",
481
+ "minLength": 1,
482
+ "maxLength": 128,
483
+ "pattern": "^[A-Za-z0-9]([A-Za-z0-9]|-[A-Za-z0-9])*$",
484
+ "description": "Artifact identifier. Must start with a letter or digit, can contain letters, numbers, and hyphens (no leading/trailing/consecutive hyphens). Every edition of one artifact shares the same name."
485
+ },
486
+ "version": {
487
+ "type": "string",
488
+ "minLength": 1,
489
+ "maxLength": 200,
490
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
491
+ "description": "Artifact version (SemVer 2.0.0, such as 1.2.3 or 1.3.0-beta.1). It counts the publisher's own changes, never the issuer's edition; each edition has its own version line. Required for publishing to registry."
492
+ },
493
+ "title": {
494
+ "type": "string",
495
+ "minLength": 1,
496
+ "maxLength": 200,
497
+ "description": "Human-readable title. Recommended for published/shared artifacts and directory browsing."
498
+ },
499
+ "description": {
500
+ "type": "string",
501
+ "minLength": 0,
502
+ "maxLength": 2000,
503
+ "description": "Detailed description or context for the artifact."
504
+ },
505
+ "code": {
506
+ "type": "string",
507
+ "minLength": 1,
508
+ "maxLength": 200,
509
+ "description": "The form number as printed by its issuer, such as W-9 or ACORD 25, or a self-issued form's own number."
510
+ },
511
+ "issuer": {
512
+ "type": "string",
513
+ "minLength": 1,
514
+ "maxLength": 200,
515
+ "description": "The organization that issues the form, such as U.S. Internal Revenue Service."
516
+ },
517
+ "edition": {
518
+ "type": "object",
519
+ "properties": {
520
+ "key": {
521
+ "type": "string",
522
+ "minLength": 1,
523
+ "maxLength": 64,
524
+ "pattern": "^(?!(?:current|latest|editions|tags|diff)$)[a-z0-9]([a-z0-9]|-[a-z0-9])*$",
525
+ "description": "Stable edition identifier, unique among the editions of one artifact (for example 2024-03 or 3b). Lowercase letters and digits with single hyphens, and not current, latest, editions, tags or diff. It is the edition segment of a coordinate such as @org/repo/w-9/2024-03 and never changes once published."
526
+ },
527
+ "label": {
528
+ "type": "string",
529
+ "minLength": 1,
530
+ "maxLength": 200,
531
+ "description": "The issuer's edition text exactly as printed, such as \"Rev. March 2024\". For display only."
532
+ },
533
+ "date": {
534
+ "type": "string",
535
+ "pattern": "^(?:\\d{4}(?:-(?:0[1-9]|1[0-2]))?|(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8]))))$",
536
+ "description": "When the issuer released the edition, at the precision the issuer gives: YYYY, YYYY-MM or YYYY-MM-DD."
537
+ },
538
+ "effectiveFrom": {
539
+ "type": "string",
540
+ "format": "date",
541
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
542
+ "description": "The date the edition takes effect. Only when the issuer prints one."
543
+ }
544
+ },
545
+ "required": [
546
+ "key",
547
+ "label"
548
+ ],
549
+ "additionalProperties": false,
550
+ "title": "ArtifactEdition",
551
+ "description": "The issuer's edition this artifact encodes. Omitted for artifacts that are not issued in editions."
552
+ },
553
+ "language": {
554
+ "type": "string",
555
+ "minLength": 2,
556
+ "maxLength": 35,
557
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
558
+ "description": "BCP 47-style source language tag for this artifact. Defaults to en when omitted."
559
+ },
560
+ "metadata": {
561
+ "description": "Custom key-value pairs for storing domain-specific or organizational metadata",
562
+ "$ref": "#/$defs/Metadata"
563
+ },
564
+ "instructions": {
565
+ "oneOf": [
566
+ {
567
+ "type": "object",
568
+ "properties": {
569
+ "kind": {
570
+ "type": "string",
571
+ "const": "inline"
572
+ },
573
+ "text": {
574
+ "type": "string",
575
+ "minLength": 1,
576
+ "maxLength": 1000000,
577
+ "description": "Inline text content"
578
+ }
579
+ },
580
+ "required": [
581
+ "kind",
582
+ "text"
583
+ ],
584
+ "additionalProperties": false,
585
+ "title": "InlineContentRef",
586
+ "description": "Inline content reference with embedded text"
587
+ },
588
+ {
589
+ "type": "object",
590
+ "properties": {
591
+ "kind": {
592
+ "type": "string",
593
+ "const": "file"
594
+ },
595
+ "path": {
596
+ "type": "string",
597
+ "minLength": 1,
598
+ "maxLength": 1000,
599
+ "description": "Path to the content file"
600
+ },
601
+ "mimeType": {
602
+ "type": "string",
603
+ "minLength": 1,
604
+ "maxLength": 100,
605
+ "description": "MIME type of the file content"
606
+ },
607
+ "title": {
608
+ "type": "string",
609
+ "minLength": 1,
610
+ "maxLength": 200,
611
+ "description": "Human-readable title"
612
+ },
613
+ "description": {
614
+ "type": "string",
615
+ "minLength": 1,
616
+ "maxLength": 2000,
617
+ "description": "Description of the content"
618
+ },
619
+ "checksum": {
620
+ "type": "string",
621
+ "pattern": "^sha256:[a-f0-9]{64}$",
622
+ "description": "SHA-256 checksum for integrity verification"
623
+ }
624
+ },
625
+ "required": [
626
+ "kind",
627
+ "path",
628
+ "mimeType"
629
+ ],
630
+ "additionalProperties": false,
631
+ "title": "FileContentRef",
632
+ "description": "File content reference with path and metadata"
633
+ }
634
+ ],
635
+ "title": "ContentRef",
636
+ "description": "Domain or compliance reference content (e.g., IRS instructions, regulatory guidance)"
637
+ },
638
+ "agentInstructions": {
639
+ "oneOf": [
640
+ {
641
+ "type": "object",
642
+ "properties": {
643
+ "kind": {
644
+ "type": "string",
645
+ "const": "inline"
646
+ },
647
+ "text": {
648
+ "type": "string",
649
+ "minLength": 1,
650
+ "maxLength": 1000000,
651
+ "description": "Inline text content"
652
+ }
653
+ },
654
+ "required": [
655
+ "kind",
656
+ "text"
657
+ ],
658
+ "additionalProperties": false,
659
+ "title": "InlineContentRef",
660
+ "description": "Inline content reference with embedded text"
661
+ },
662
+ {
663
+ "type": "object",
664
+ "properties": {
665
+ "kind": {
666
+ "type": "string",
667
+ "const": "file"
668
+ },
669
+ "path": {
670
+ "type": "string",
671
+ "minLength": 1,
672
+ "maxLength": 1000,
673
+ "description": "Path to the content file"
674
+ },
675
+ "mimeType": {
676
+ "type": "string",
677
+ "minLength": 1,
678
+ "maxLength": 100,
679
+ "description": "MIME type of the file content"
680
+ },
681
+ "title": {
682
+ "type": "string",
683
+ "minLength": 1,
684
+ "maxLength": 200,
685
+ "description": "Human-readable title"
686
+ },
687
+ "description": {
688
+ "type": "string",
689
+ "minLength": 1,
690
+ "maxLength": 2000,
691
+ "description": "Description of the content"
692
+ },
693
+ "checksum": {
694
+ "type": "string",
695
+ "pattern": "^sha256:[a-f0-9]{64}$",
696
+ "description": "SHA-256 checksum for integrity verification"
697
+ }
698
+ },
699
+ "required": [
700
+ "kind",
701
+ "path",
702
+ "mimeType"
703
+ ],
704
+ "additionalProperties": false,
705
+ "title": "FileContentRef",
706
+ "description": "File content reference with path and metadata"
707
+ }
708
+ ],
709
+ "title": "ContentRef",
710
+ "description": "LLM/agent prompts for field ordering, grouping, tone, and presentation guidance"
711
+ },
712
+ "kind": {
713
+ "type": "string",
714
+ "const": "document"
715
+ },
716
+ "layers": {
717
+ "type": "object",
718
+ "propertyNames": {
719
+ "type": "string",
720
+ "minLength": 1,
721
+ "maxLength": 100,
722
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
723
+ "description": "Layer identifier (camelCase, starts with lowercase letter)"
724
+ },
725
+ "additionalProperties": {
726
+ "$ref": "#/$defs/Layer"
727
+ },
728
+ "description": "Named layers for rendering this document into different formats. Keys are user-defined identifiers (e.g., markdown, pdf, html)",
729
+ "allOf": [
730
+ {
731
+ "additionalProperties": {
732
+ "not": {
733
+ "properties": {
734
+ "mimeType": {
735
+ "pattern": "^(?:[tT][eE][xX][tT]/[tT][sS][xX]|[tT][eE][xX][tT]/[jJ][sS][xX])$"
736
+ }
737
+ },
738
+ "required": [
739
+ "mimeType"
740
+ ]
741
+ }
742
+ }
743
+ }
744
+ ]
745
+ },
746
+ "defaultLayer": {
747
+ "type": "string",
748
+ "minLength": 1,
749
+ "maxLength": 100,
750
+ "description": "Key of the default layer to use when none specified at render time"
751
+ }
752
+ },
753
+ "required": [
754
+ "name",
755
+ "kind"
756
+ ],
757
+ "additionalProperties": false,
758
+ "title": "Document",
759
+ "description": "A document artifact representing static content with no inputs. Documents can have multiple layers for rendering to different output formats (e.g., PDF, Markdown, HTML)."
760
+ },
761
+ "Bundle": {
762
+ "type": "object",
763
+ "properties": {
764
+ "$schema": {
765
+ "type": "string",
766
+ "format": "uri",
767
+ "description": "JSON Schema URI for this artifact instance."
768
+ },
769
+ "name": {
770
+ "type": "string",
771
+ "minLength": 1,
772
+ "maxLength": 128,
773
+ "pattern": "^[A-Za-z0-9]([A-Za-z0-9]|-[A-Za-z0-9])*$",
774
+ "description": "Artifact identifier. Must start with a letter or digit, can contain letters, numbers, and hyphens (no leading/trailing/consecutive hyphens). Every edition of one artifact shares the same name."
775
+ },
776
+ "version": {
777
+ "type": "string",
778
+ "minLength": 1,
779
+ "maxLength": 200,
780
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
781
+ "description": "Artifact version (SemVer 2.0.0, such as 1.2.3 or 1.3.0-beta.1). It counts the publisher's own changes, never the issuer's edition; each edition has its own version line. Required for publishing to registry."
782
+ },
783
+ "title": {
784
+ "type": "string",
785
+ "minLength": 1,
786
+ "maxLength": 200,
787
+ "description": "Human-readable title. Recommended for published/shared artifacts and directory browsing."
788
+ },
789
+ "description": {
790
+ "type": "string",
791
+ "minLength": 0,
792
+ "maxLength": 2000,
793
+ "description": "Detailed description or context for the artifact."
794
+ },
795
+ "code": {
796
+ "type": "string",
797
+ "minLength": 1,
798
+ "maxLength": 200,
799
+ "description": "The form number as printed by its issuer, such as W-9 or ACORD 25, or a self-issued form's own number."
800
+ },
801
+ "issuer": {
802
+ "type": "string",
803
+ "minLength": 1,
804
+ "maxLength": 200,
805
+ "description": "The organization that issues the form, such as U.S. Internal Revenue Service."
806
+ },
807
+ "edition": {
808
+ "type": "object",
809
+ "properties": {
810
+ "key": {
811
+ "type": "string",
812
+ "minLength": 1,
813
+ "maxLength": 64,
814
+ "pattern": "^(?!(?:current|latest|editions|tags|diff)$)[a-z0-9]([a-z0-9]|-[a-z0-9])*$",
815
+ "description": "Stable edition identifier, unique among the editions of one artifact (for example 2024-03 or 3b). Lowercase letters and digits with single hyphens, and not current, latest, editions, tags or diff. It is the edition segment of a coordinate such as @org/repo/w-9/2024-03 and never changes once published."
816
+ },
817
+ "label": {
818
+ "type": "string",
819
+ "minLength": 1,
820
+ "maxLength": 200,
821
+ "description": "The issuer's edition text exactly as printed, such as \"Rev. March 2024\". For display only."
822
+ },
823
+ "date": {
824
+ "type": "string",
825
+ "pattern": "^(?:\\d{4}(?:-(?:0[1-9]|1[0-2]))?|(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8]))))$",
826
+ "description": "When the issuer released the edition, at the precision the issuer gives: YYYY, YYYY-MM or YYYY-MM-DD."
827
+ },
828
+ "effectiveFrom": {
829
+ "type": "string",
830
+ "format": "date",
831
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
832
+ "description": "The date the edition takes effect. Only when the issuer prints one."
833
+ }
834
+ },
835
+ "required": [
836
+ "key",
837
+ "label"
838
+ ],
839
+ "additionalProperties": false,
840
+ "title": "ArtifactEdition",
841
+ "description": "The issuer's edition this artifact encodes. Omitted for artifacts that are not issued in editions."
842
+ },
843
+ "language": {
844
+ "type": "string",
845
+ "minLength": 2,
846
+ "maxLength": 35,
847
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
848
+ "description": "BCP 47-style source language tag for this artifact. Defaults to en when omitted."
849
+ },
850
+ "metadata": {
851
+ "description": "Custom key-value pairs for storing domain-specific or organizational metadata",
852
+ "$ref": "#/$defs/Metadata"
853
+ },
854
+ "instructions": {
855
+ "oneOf": [
856
+ {
857
+ "type": "object",
858
+ "properties": {
859
+ "kind": {
860
+ "type": "string",
861
+ "const": "inline"
862
+ },
863
+ "text": {
864
+ "type": "string",
865
+ "minLength": 1,
866
+ "maxLength": 1000000,
867
+ "description": "Inline text content"
868
+ }
869
+ },
870
+ "required": [
871
+ "kind",
872
+ "text"
873
+ ],
874
+ "additionalProperties": false,
875
+ "title": "InlineContentRef",
876
+ "description": "Inline content reference with embedded text"
877
+ },
878
+ {
879
+ "type": "object",
880
+ "properties": {
881
+ "kind": {
882
+ "type": "string",
883
+ "const": "file"
884
+ },
885
+ "path": {
886
+ "type": "string",
887
+ "minLength": 1,
888
+ "maxLength": 1000,
889
+ "description": "Path to the content file"
890
+ },
891
+ "mimeType": {
892
+ "type": "string",
893
+ "minLength": 1,
894
+ "maxLength": 100,
895
+ "description": "MIME type of the file content"
896
+ },
897
+ "title": {
898
+ "type": "string",
899
+ "minLength": 1,
900
+ "maxLength": 200,
901
+ "description": "Human-readable title"
902
+ },
903
+ "description": {
904
+ "type": "string",
905
+ "minLength": 1,
906
+ "maxLength": 2000,
907
+ "description": "Description of the content"
908
+ },
909
+ "checksum": {
910
+ "type": "string",
911
+ "pattern": "^sha256:[a-f0-9]{64}$",
912
+ "description": "SHA-256 checksum for integrity verification"
913
+ }
914
+ },
915
+ "required": [
916
+ "kind",
917
+ "path",
918
+ "mimeType"
919
+ ],
920
+ "additionalProperties": false,
921
+ "title": "FileContentRef",
922
+ "description": "File content reference with path and metadata"
923
+ }
924
+ ],
925
+ "title": "ContentRef",
926
+ "description": "Domain or compliance reference content (e.g., IRS instructions, regulatory guidance)"
927
+ },
928
+ "agentInstructions": {
929
+ "oneOf": [
930
+ {
931
+ "type": "object",
932
+ "properties": {
933
+ "kind": {
934
+ "type": "string",
935
+ "const": "inline"
936
+ },
937
+ "text": {
938
+ "type": "string",
939
+ "minLength": 1,
940
+ "maxLength": 1000000,
941
+ "description": "Inline text content"
942
+ }
943
+ },
944
+ "required": [
945
+ "kind",
946
+ "text"
947
+ ],
948
+ "additionalProperties": false,
949
+ "title": "InlineContentRef",
950
+ "description": "Inline content reference with embedded text"
951
+ },
952
+ {
953
+ "type": "object",
954
+ "properties": {
955
+ "kind": {
956
+ "type": "string",
957
+ "const": "file"
958
+ },
959
+ "path": {
960
+ "type": "string",
961
+ "minLength": 1,
962
+ "maxLength": 1000,
963
+ "description": "Path to the content file"
964
+ },
965
+ "mimeType": {
966
+ "type": "string",
967
+ "minLength": 1,
968
+ "maxLength": 100,
969
+ "description": "MIME type of the file content"
970
+ },
971
+ "title": {
972
+ "type": "string",
973
+ "minLength": 1,
974
+ "maxLength": 200,
975
+ "description": "Human-readable title"
976
+ },
977
+ "description": {
978
+ "type": "string",
979
+ "minLength": 1,
980
+ "maxLength": 2000,
981
+ "description": "Description of the content"
982
+ },
983
+ "checksum": {
984
+ "type": "string",
985
+ "pattern": "^sha256:[a-f0-9]{64}$",
986
+ "description": "SHA-256 checksum for integrity verification"
987
+ }
988
+ },
989
+ "required": [
990
+ "kind",
991
+ "path",
992
+ "mimeType"
993
+ ],
994
+ "additionalProperties": false,
995
+ "title": "FileContentRef",
996
+ "description": "File content reference with path and metadata"
997
+ }
998
+ ],
999
+ "title": "ContentRef",
1000
+ "description": "LLM/agent prompts for field ordering, grouping, tone, and presentation guidance"
1001
+ },
1002
+ "kind": {
1003
+ "type": "string",
1004
+ "const": "bundle"
1005
+ },
1006
+ "defs": {
1007
+ "$ref": "#/$defs/DefsSection"
1008
+ },
1009
+ "contents": {
1010
+ "type": "array",
1011
+ "items": {
1012
+ "$ref": "#/$defs/BundleContentItem"
1013
+ },
1014
+ "description": "Ordered bundle contents. Each item has a key and is either an inline artifact, path reference, or registry reference."
1015
+ }
1016
+ },
1017
+ "required": [
1018
+ "name",
1019
+ "kind",
1020
+ "contents"
1021
+ ],
1022
+ "additionalProperties": false,
1023
+ "title": "Bundle",
1024
+ "description": "A bundle artifact that groups together related artifacts into a single distributable unit. Bundles can contain documents, forms, checklists, and other bundles."
1025
+ },
1026
+ "Checklist": {
1027
+ "type": "object",
1028
+ "properties": {
1029
+ "$schema": {
1030
+ "type": "string",
1031
+ "format": "uri",
1032
+ "description": "JSON Schema URI for this artifact instance."
1033
+ },
1034
+ "name": {
1035
+ "type": "string",
1036
+ "minLength": 1,
1037
+ "maxLength": 128,
1038
+ "pattern": "^[A-Za-z0-9]([A-Za-z0-9]|-[A-Za-z0-9])*$",
1039
+ "description": "Artifact identifier. Must start with a letter or digit, can contain letters, numbers, and hyphens (no leading/trailing/consecutive hyphens). Every edition of one artifact shares the same name."
1040
+ },
1041
+ "version": {
1042
+ "type": "string",
1043
+ "minLength": 1,
1044
+ "maxLength": 200,
1045
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
1046
+ "description": "Artifact version (SemVer 2.0.0, such as 1.2.3 or 1.3.0-beta.1). It counts the publisher's own changes, never the issuer's edition; each edition has its own version line. Required for publishing to registry."
1047
+ },
1048
+ "title": {
1049
+ "type": "string",
1050
+ "minLength": 1,
1051
+ "maxLength": 200,
1052
+ "description": "Human-readable title. Recommended for published/shared artifacts and directory browsing."
1053
+ },
1054
+ "description": {
1055
+ "type": "string",
1056
+ "minLength": 0,
1057
+ "maxLength": 2000,
1058
+ "description": "Detailed description or context for the artifact."
1059
+ },
1060
+ "code": {
1061
+ "type": "string",
1062
+ "minLength": 1,
1063
+ "maxLength": 200,
1064
+ "description": "The form number as printed by its issuer, such as W-9 or ACORD 25, or a self-issued form's own number."
1065
+ },
1066
+ "issuer": {
1067
+ "type": "string",
1068
+ "minLength": 1,
1069
+ "maxLength": 200,
1070
+ "description": "The organization that issues the form, such as U.S. Internal Revenue Service."
1071
+ },
1072
+ "edition": {
1073
+ "type": "object",
1074
+ "properties": {
1075
+ "key": {
1076
+ "type": "string",
1077
+ "minLength": 1,
1078
+ "maxLength": 64,
1079
+ "pattern": "^(?!(?:current|latest|editions|tags|diff)$)[a-z0-9]([a-z0-9]|-[a-z0-9])*$",
1080
+ "description": "Stable edition identifier, unique among the editions of one artifact (for example 2024-03 or 3b). Lowercase letters and digits with single hyphens, and not current, latest, editions, tags or diff. It is the edition segment of a coordinate such as @org/repo/w-9/2024-03 and never changes once published."
1081
+ },
1082
+ "label": {
1083
+ "type": "string",
1084
+ "minLength": 1,
1085
+ "maxLength": 200,
1086
+ "description": "The issuer's edition text exactly as printed, such as \"Rev. March 2024\". For display only."
1087
+ },
1088
+ "date": {
1089
+ "type": "string",
1090
+ "pattern": "^(?:\\d{4}(?:-(?:0[1-9]|1[0-2]))?|(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8]))))$",
1091
+ "description": "When the issuer released the edition, at the precision the issuer gives: YYYY, YYYY-MM or YYYY-MM-DD."
1092
+ },
1093
+ "effectiveFrom": {
1094
+ "type": "string",
1095
+ "format": "date",
1096
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
1097
+ "description": "The date the edition takes effect. Only when the issuer prints one."
1098
+ }
1099
+ },
1100
+ "required": [
1101
+ "key",
1102
+ "label"
1103
+ ],
1104
+ "additionalProperties": false,
1105
+ "title": "ArtifactEdition",
1106
+ "description": "The issuer's edition this artifact encodes. Omitted for artifacts that are not issued in editions."
1107
+ },
1108
+ "language": {
1109
+ "type": "string",
1110
+ "minLength": 2,
1111
+ "maxLength": 35,
1112
+ "pattern": "^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$",
1113
+ "description": "BCP 47-style source language tag for this artifact. Defaults to en when omitted."
1114
+ },
1115
+ "metadata": {
1116
+ "description": "Custom key-value pairs for storing domain-specific or organizational metadata",
1117
+ "$ref": "#/$defs/Metadata"
1118
+ },
1119
+ "instructions": {
1120
+ "oneOf": [
1121
+ {
1122
+ "type": "object",
1123
+ "properties": {
1124
+ "kind": {
1125
+ "type": "string",
1126
+ "const": "inline"
1127
+ },
1128
+ "text": {
1129
+ "type": "string",
1130
+ "minLength": 1,
1131
+ "maxLength": 1000000,
1132
+ "description": "Inline text content"
1133
+ }
1134
+ },
1135
+ "required": [
1136
+ "kind",
1137
+ "text"
1138
+ ],
1139
+ "additionalProperties": false,
1140
+ "title": "InlineContentRef",
1141
+ "description": "Inline content reference with embedded text"
1142
+ },
1143
+ {
1144
+ "type": "object",
1145
+ "properties": {
1146
+ "kind": {
1147
+ "type": "string",
1148
+ "const": "file"
1149
+ },
1150
+ "path": {
1151
+ "type": "string",
1152
+ "minLength": 1,
1153
+ "maxLength": 1000,
1154
+ "description": "Path to the content file"
1155
+ },
1156
+ "mimeType": {
1157
+ "type": "string",
1158
+ "minLength": 1,
1159
+ "maxLength": 100,
1160
+ "description": "MIME type of the file content"
1161
+ },
1162
+ "title": {
1163
+ "type": "string",
1164
+ "minLength": 1,
1165
+ "maxLength": 200,
1166
+ "description": "Human-readable title"
1167
+ },
1168
+ "description": {
1169
+ "type": "string",
1170
+ "minLength": 1,
1171
+ "maxLength": 2000,
1172
+ "description": "Description of the content"
1173
+ },
1174
+ "checksum": {
1175
+ "type": "string",
1176
+ "pattern": "^sha256:[a-f0-9]{64}$",
1177
+ "description": "SHA-256 checksum for integrity verification"
1178
+ }
1179
+ },
1180
+ "required": [
1181
+ "kind",
1182
+ "path",
1183
+ "mimeType"
1184
+ ],
1185
+ "additionalProperties": false,
1186
+ "title": "FileContentRef",
1187
+ "description": "File content reference with path and metadata"
1188
+ }
1189
+ ],
1190
+ "title": "ContentRef",
1191
+ "description": "Domain or compliance reference content (e.g., IRS instructions, regulatory guidance)"
1192
+ },
1193
+ "agentInstructions": {
1194
+ "oneOf": [
1195
+ {
1196
+ "type": "object",
1197
+ "properties": {
1198
+ "kind": {
1199
+ "type": "string",
1200
+ "const": "inline"
1201
+ },
1202
+ "text": {
1203
+ "type": "string",
1204
+ "minLength": 1,
1205
+ "maxLength": 1000000,
1206
+ "description": "Inline text content"
1207
+ }
1208
+ },
1209
+ "required": [
1210
+ "kind",
1211
+ "text"
1212
+ ],
1213
+ "additionalProperties": false,
1214
+ "title": "InlineContentRef",
1215
+ "description": "Inline content reference with embedded text"
1216
+ },
1217
+ {
1218
+ "type": "object",
1219
+ "properties": {
1220
+ "kind": {
1221
+ "type": "string",
1222
+ "const": "file"
1223
+ },
1224
+ "path": {
1225
+ "type": "string",
1226
+ "minLength": 1,
1227
+ "maxLength": 1000,
1228
+ "description": "Path to the content file"
1229
+ },
1230
+ "mimeType": {
1231
+ "type": "string",
1232
+ "minLength": 1,
1233
+ "maxLength": 100,
1234
+ "description": "MIME type of the file content"
1235
+ },
1236
+ "title": {
1237
+ "type": "string",
1238
+ "minLength": 1,
1239
+ "maxLength": 200,
1240
+ "description": "Human-readable title"
1241
+ },
1242
+ "description": {
1243
+ "type": "string",
1244
+ "minLength": 1,
1245
+ "maxLength": 2000,
1246
+ "description": "Description of the content"
1247
+ },
1248
+ "checksum": {
1249
+ "type": "string",
1250
+ "pattern": "^sha256:[a-f0-9]{64}$",
1251
+ "description": "SHA-256 checksum for integrity verification"
1252
+ }
1253
+ },
1254
+ "required": [
1255
+ "kind",
1256
+ "path",
1257
+ "mimeType"
1258
+ ],
1259
+ "additionalProperties": false,
1260
+ "title": "FileContentRef",
1261
+ "description": "File content reference with path and metadata"
1262
+ }
1263
+ ],
1264
+ "title": "ContentRef",
1265
+ "description": "LLM/agent prompts for field ordering, grouping, tone, and presentation guidance"
1266
+ },
1267
+ "kind": {
1268
+ "type": "string",
1269
+ "const": "checklist"
1270
+ },
1271
+ "items": {
1272
+ "type": "array",
1273
+ "items": {
1274
+ "$ref": "#/$defs/ChecklistItem"
1275
+ },
1276
+ "description": "Array of checklist items. Each item represents a task, step, or requirement."
1277
+ },
1278
+ "layers": {
1279
+ "type": "object",
1280
+ "propertyNames": {
1281
+ "type": "string",
1282
+ "minLength": 1,
1283
+ "maxLength": 100,
1284
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
1285
+ "description": "Layer identifier (camelCase, starts with lowercase letter)"
1286
+ },
1287
+ "additionalProperties": {
1288
+ "$ref": "#/$defs/Layer"
1289
+ },
1290
+ "description": "Named layers for rendering this checklist into different formats. Keys are user-defined identifiers (e.g., markdown, pdf, html)",
1291
+ "allOf": [
1292
+ {
1293
+ "additionalProperties": {
1294
+ "not": {
1295
+ "properties": {
1296
+ "mimeType": {
1297
+ "pattern": "^(?:[tT][eE][xX][tT]/[tT][sS][xX]|[tT][eE][xX][tT]/[jJ][sS][xX])$"
1298
+ }
1299
+ },
1300
+ "required": [
1301
+ "mimeType"
1302
+ ]
1303
+ }
1304
+ }
1305
+ }
1306
+ ]
1307
+ },
1308
+ "defaultLayer": {
1309
+ "type": "string",
1310
+ "minLength": 1,
1311
+ "maxLength": 100,
1312
+ "description": "Key of the default layer to use when none specified at render time"
1313
+ }
1314
+ },
1315
+ "required": [
1316
+ "name",
1317
+ "kind",
1318
+ "items"
1319
+ ],
1320
+ "additionalProperties": false,
1321
+ "title": "Checklist",
1322
+ "description": "A checklist artifact containing an ordered list of items to track. Each item may define how its status should be represented at runtime (boolean or enum)."
1323
+ },
1324
+ "BundleContentItem": {
1325
+ "oneOf": [
1326
+ {
1327
+ "type": "object",
1328
+ "properties": {
1329
+ "key": {
1330
+ "type": "string",
1331
+ "minLength": 1,
1332
+ "maxLength": 100,
1333
+ "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
1334
+ "description": "Unique identifier for this content item, used to reference it in defs expressions"
1335
+ },
1336
+ "include": {
1337
+ "$ref": "#/$defs/CondExpr"
1338
+ },
1339
+ "type": {
1340
+ "type": "string",
1341
+ "const": "inline"
1342
+ },
1343
+ "artifact": {
1344
+ "description": "Inline artifact definition (document, form, checklist, or nested bundle)",
1345
+ "anyOf": [
1346
+ {
1347
+ "$ref": "#/$defs/Document"
1348
+ },
1349
+ {
1350
+ "$ref": "#/$defs/Form"
1351
+ },
1352
+ {
1353
+ "$ref": "#/$defs/Checklist"
1354
+ },
1355
+ {
1356
+ "$ref": "#/$defs/Bundle"
1357
+ }
1358
+ ]
1359
+ }
1360
+ },
1361
+ "required": [
1362
+ "key",
1363
+ "type",
1364
+ "artifact"
1365
+ ],
1366
+ "additionalProperties": false
1367
+ },
1368
+ {
1369
+ "type": "object",
1370
+ "properties": {
1371
+ "key": {
1372
+ "type": "string",
1373
+ "minLength": 1,
1374
+ "maxLength": 100,
1375
+ "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
1376
+ "description": "Unique identifier for this content item, used to reference it in defs expressions"
1377
+ },
1378
+ "include": {
1379
+ "$ref": "#/$defs/CondExpr"
1380
+ },
1381
+ "type": {
1382
+ "type": "string",
1383
+ "const": "path"
1384
+ },
1385
+ "path": {
1386
+ "type": "string",
1387
+ "minLength": 1,
1388
+ "description": "Path to the artifact file, relative to the bundle file's directory"
1389
+ }
1390
+ },
1391
+ "required": [
1392
+ "key",
1393
+ "type",
1394
+ "path"
1395
+ ],
1396
+ "additionalProperties": false
1397
+ },
1398
+ {
1399
+ "type": "object",
1400
+ "properties": {
1401
+ "key": {
1402
+ "type": "string",
1403
+ "minLength": 1,
1404
+ "maxLength": 100,
1405
+ "pattern": "^[a-zA-Z][a-zA-Z0-9_-]*$",
1406
+ "description": "Unique identifier for this content item, used to reference it in defs expressions"
1407
+ },
1408
+ "include": {
1409
+ "$ref": "#/$defs/CondExpr"
1410
+ },
1411
+ "type": {
1412
+ "type": "string",
1413
+ "const": "registry"
1414
+ },
1415
+ "slug": {
1416
+ "type": "string",
1417
+ "pattern": "^@?[a-z0-9](?:[a-z0-9]|-[a-z0-9])*\\/[a-z0-9](?:[a-z0-9]|-[a-z0-9])*\\/[a-z0-9](?:[a-z0-9]|-[a-z0-9])*$",
1418
+ "description": "Artifact address @org/repo/name, with no edition or version"
1419
+ },
1420
+ "edition": {
1421
+ "type": "string",
1422
+ "minLength": 1,
1423
+ "maxLength": 64,
1424
+ "pattern": "^(?!(?:current|latest|editions|tags|diff)$)[a-z0-9]([a-z0-9]|-[a-z0-9])*$",
1425
+ "description": "Edition key. When omitted, the registry's current edition is used."
1426
+ },
1427
+ "version": {
1428
+ "type": "string",
1429
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
1430
+ "description": "Exact version. When omitted, the latest version of the edition is used."
1431
+ }
1432
+ },
1433
+ "required": [
1434
+ "key",
1435
+ "type",
1436
+ "slug"
1437
+ ],
1438
+ "additionalProperties": false
1439
+ }
1440
+ ],
1441
+ "title": "BundleContentItem",
1442
+ "description": "Bundle content item: an inline artifact, path reference, or registry reference with optional include condition"
1443
+ },
1444
+ "ChecklistItem": {
1445
+ "type": "object",
1446
+ "properties": {
1447
+ "id": {
1448
+ "type": "string",
1449
+ "minLength": 1,
1450
+ "maxLength": 128,
1451
+ "description": "Unique identifier for the checklist item (e.g., \"task-1\", \"step-a\"). Used to link to runtime status."
1452
+ },
1453
+ "title": {
1454
+ "type": "string",
1455
+ "minLength": 1,
1456
+ "maxLength": 500,
1457
+ "description": "Title or label for the checklist item"
1458
+ },
1459
+ "description": {
1460
+ "type": "string",
1461
+ "minLength": 1,
1462
+ "maxLength": 2000,
1463
+ "description": "Detailed description or instructions for the item"
1464
+ },
1465
+ "status": {
1466
+ "oneOf": [
1467
+ {
1468
+ "type": "object",
1469
+ "properties": {
1470
+ "kind": {
1471
+ "type": "string",
1472
+ "const": "boolean"
1473
+ },
1474
+ "default": {
1475
+ "type": "boolean",
1476
+ "description": "Default status value (true/false) for new instances"
1477
+ }
1478
+ },
1479
+ "required": [
1480
+ "kind"
1481
+ ],
1482
+ "additionalProperties": false,
1483
+ "title": "BooleanStatusSpec",
1484
+ "description": "Boolean status (e.g., incomplete/complete) with an optional default value."
1485
+ },
1486
+ {
1487
+ "type": "object",
1488
+ "properties": {
1489
+ "kind": {
1490
+ "type": "string",
1491
+ "const": "enum"
1492
+ },
1493
+ "options": {
1494
+ "minItems": 1,
1495
+ "type": "array",
1496
+ "items": {
1497
+ "type": "object",
1498
+ "properties": {
1499
+ "value": {
1500
+ "type": "string",
1501
+ "minLength": 1,
1502
+ "maxLength": 64,
1503
+ "description": "Internal status value (e.g., \"todo\", \"in-progress\", \"done\")"
1504
+ },
1505
+ "label": {
1506
+ "type": "string",
1507
+ "minLength": 1,
1508
+ "maxLength": 256,
1509
+ "description": "Human-readable label for the status option"
1510
+ },
1511
+ "description": {
1512
+ "type": "string",
1513
+ "minLength": 1,
1514
+ "maxLength": 2000,
1515
+ "description": "Optional description or help text for this status option"
1516
+ }
1517
+ },
1518
+ "required": [
1519
+ "value",
1520
+ "label"
1521
+ ],
1522
+ "additionalProperties": false,
1523
+ "title": "EnumStatusOption"
1524
+ },
1525
+ "description": "Allowed status options"
1526
+ },
1527
+ "default": {
1528
+ "type": "string",
1529
+ "minLength": 1,
1530
+ "maxLength": 64,
1531
+ "description": "Default status value for new instances (must match one of the option values)"
1532
+ }
1533
+ },
1534
+ "required": [
1535
+ "kind",
1536
+ "options"
1537
+ ],
1538
+ "additionalProperties": false,
1539
+ "title": "EnumStatusSpec",
1540
+ "description": "Enum-based status with a set of allowed options and an optional default."
1541
+ }
1542
+ ],
1543
+ "title": "StatusSpec",
1544
+ "description": "Specification for how checklist item status should be represented (boolean or enum)."
1545
+ }
1546
+ },
1547
+ "required": [
1548
+ "id",
1549
+ "title"
1550
+ ],
1551
+ "additionalProperties": false,
1552
+ "title": "ChecklistItem",
1553
+ "description": "A single item in a checklist artifact. Each item has an ID, title, optional description, and an optional status specification (boolean or enum). If status is omitted, a default boolean status may be assumed (implementation-defined)."
1554
+ },
1555
+ "FormField": {
1556
+ "title": "FormField",
1557
+ "description": "Single input/data element, nested fieldset, or recursive list",
1558
+ "oneOf": [
1559
+ {
1560
+ "type": "object",
1561
+ "properties": {
1562
+ "label": {
1563
+ "type": "string",
1564
+ "minLength": 1,
1565
+ "maxLength": 200,
1566
+ "description": "Display label for the field"
1567
+ },
1568
+ "description": {
1569
+ "type": "string",
1570
+ "minLength": 1,
1571
+ "maxLength": 1000,
1572
+ "description": "Description or help text for the field"
1573
+ },
1574
+ "required": {
1575
+ "$ref": "#/$defs/CondExpr"
1576
+ },
1577
+ "visible": {
1578
+ "$ref": "#/$defs/CondExpr"
1579
+ },
1580
+ "type": {
1581
+ "type": "string",
1582
+ "const": "text"
1583
+ },
1584
+ "minLength": {
1585
+ "type": "integer",
1586
+ "minimum": 0,
1587
+ "maximum": 9007199254740991,
1588
+ "description": "Minimum length"
1589
+ },
1590
+ "maxLength": {
1591
+ "type": "integer",
1592
+ "minimum": 0,
1593
+ "maximum": 9007199254740991,
1594
+ "description": "Maximum length"
1595
+ },
1596
+ "pattern": {
1597
+ "type": "string",
1598
+ "minLength": 1,
1599
+ "maxLength": 500,
1600
+ "description": "Regular expression pattern for validation"
1601
+ },
1602
+ "default": {
1603
+ "type": "string",
1604
+ "description": "Default value"
1605
+ }
1606
+ },
1607
+ "required": [
1608
+ "type"
1609
+ ],
1610
+ "additionalProperties": false
1611
+ },
1612
+ {
1613
+ "type": "object",
1614
+ "properties": {
1615
+ "label": {
1616
+ "type": "string",
1617
+ "minLength": 1,
1618
+ "maxLength": 200,
1619
+ "description": "Display label for the field"
1620
+ },
1621
+ "description": {
1622
+ "type": "string",
1623
+ "minLength": 1,
1624
+ "maxLength": 1000,
1625
+ "description": "Description or help text for the field"
1626
+ },
1627
+ "required": {
1628
+ "$ref": "#/$defs/CondExpr"
1629
+ },
1630
+ "visible": {
1631
+ "$ref": "#/$defs/CondExpr"
1632
+ },
1633
+ "type": {
1634
+ "type": "string",
1635
+ "const": "boolean"
1636
+ },
1637
+ "default": {
1638
+ "type": "boolean",
1639
+ "description": "Default value"
1640
+ }
1641
+ },
1642
+ "required": [
1643
+ "type"
1644
+ ],
1645
+ "additionalProperties": false
1646
+ },
1647
+ {
1648
+ "type": "object",
1649
+ "properties": {
1650
+ "label": {
1651
+ "type": "string",
1652
+ "minLength": 1,
1653
+ "maxLength": 200,
1654
+ "description": "Display label for the field"
1655
+ },
1656
+ "description": {
1657
+ "type": "string",
1658
+ "minLength": 1,
1659
+ "maxLength": 1000,
1660
+ "description": "Description or help text for the field"
1661
+ },
1662
+ "required": {
1663
+ "$ref": "#/$defs/CondExpr"
1664
+ },
1665
+ "visible": {
1666
+ "$ref": "#/$defs/CondExpr"
1667
+ },
1668
+ "type": {
1669
+ "type": "string",
1670
+ "const": "number"
1671
+ },
1672
+ "min": {
1673
+ "type": "number",
1674
+ "description": "Minimum value"
1675
+ },
1676
+ "max": {
1677
+ "type": "number",
1678
+ "description": "Maximum value"
1679
+ },
1680
+ "step": {
1681
+ "type": "number",
1682
+ "exclusiveMinimum": 0,
1683
+ "description": "Allowed increment: a value must be a multiple of step (e.g., 0.01 for cents)"
1684
+ },
1685
+ "default": {
1686
+ "type": "number",
1687
+ "description": "Default value"
1688
+ }
1689
+ },
1690
+ "required": [
1691
+ "type"
1692
+ ],
1693
+ "additionalProperties": false
1694
+ },
1695
+ {
1696
+ "type": "object",
1697
+ "properties": {
1698
+ "label": {
1699
+ "type": "string",
1700
+ "minLength": 1,
1701
+ "maxLength": 200,
1702
+ "description": "Display label for the field"
1703
+ },
1704
+ "description": {
1705
+ "type": "string",
1706
+ "minLength": 1,
1707
+ "maxLength": 1000,
1708
+ "description": "Description or help text for the field"
1709
+ },
1710
+ "required": {
1711
+ "$ref": "#/$defs/CondExpr"
1712
+ },
1713
+ "visible": {
1714
+ "$ref": "#/$defs/CondExpr"
1715
+ },
1716
+ "type": {
1717
+ "type": "string",
1718
+ "const": "coordinate"
1719
+ },
1720
+ "default": {
1721
+ "$ref": "#/$defs/Coordinate"
1722
+ }
1723
+ },
1724
+ "required": [
1725
+ "type"
1726
+ ],
1727
+ "additionalProperties": false
1728
+ },
1729
+ {
1730
+ "type": "object",
1731
+ "properties": {
1732
+ "label": {
1733
+ "type": "string",
1734
+ "minLength": 1,
1735
+ "maxLength": 200,
1736
+ "description": "Display label for the field"
1737
+ },
1738
+ "description": {
1739
+ "type": "string",
1740
+ "minLength": 1,
1741
+ "maxLength": 1000,
1742
+ "description": "Description or help text for the field"
1743
+ },
1744
+ "required": {
1745
+ "$ref": "#/$defs/CondExpr"
1746
+ },
1747
+ "visible": {
1748
+ "$ref": "#/$defs/CondExpr"
1749
+ },
1750
+ "type": {
1751
+ "type": "string",
1752
+ "const": "bbox"
1753
+ },
1754
+ "default": {
1755
+ "$ref": "#/$defs/Bbox"
1756
+ }
1757
+ },
1758
+ "required": [
1759
+ "type"
1760
+ ],
1761
+ "additionalProperties": false
1762
+ },
1763
+ {
1764
+ "type": "object",
1765
+ "properties": {
1766
+ "label": {
1767
+ "type": "string",
1768
+ "minLength": 1,
1769
+ "maxLength": 200,
1770
+ "description": "Display label for the field"
1771
+ },
1772
+ "description": {
1773
+ "type": "string",
1774
+ "minLength": 1,
1775
+ "maxLength": 1000,
1776
+ "description": "Description or help text for the field"
1777
+ },
1778
+ "required": {
1779
+ "$ref": "#/$defs/CondExpr"
1780
+ },
1781
+ "visible": {
1782
+ "$ref": "#/$defs/CondExpr"
1783
+ },
1784
+ "type": {
1785
+ "type": "string",
1786
+ "const": "money"
1787
+ },
1788
+ "min": {
1789
+ "type": "number",
1790
+ "description": "Minimum amount"
1791
+ },
1792
+ "max": {
1793
+ "type": "number",
1794
+ "description": "Maximum amount"
1795
+ },
1796
+ "currency": {
1797
+ "type": "string",
1798
+ "minLength": 3,
1799
+ "maxLength": 3,
1800
+ "pattern": "^[A-Z]{3}$",
1801
+ "description": "ISO 4217 alpha-3 currency code a value must use (e.g., USD). Omit to accept any currency"
1802
+ },
1803
+ "default": {
1804
+ "$ref": "#/$defs/Money"
1805
+ }
1806
+ },
1807
+ "required": [
1808
+ "type"
1809
+ ],
1810
+ "additionalProperties": false
1811
+ },
1812
+ {
1813
+ "type": "object",
1814
+ "properties": {
1815
+ "label": {
1816
+ "type": "string",
1817
+ "minLength": 1,
1818
+ "maxLength": 200,
1819
+ "description": "Display label for the field"
1820
+ },
1821
+ "description": {
1822
+ "type": "string",
1823
+ "minLength": 1,
1824
+ "maxLength": 1000,
1825
+ "description": "Description or help text for the field"
1826
+ },
1827
+ "required": {
1828
+ "$ref": "#/$defs/CondExpr"
1829
+ },
1830
+ "visible": {
1831
+ "$ref": "#/$defs/CondExpr"
1832
+ },
1833
+ "type": {
1834
+ "type": "string",
1835
+ "const": "address"
1836
+ },
1837
+ "default": {
1838
+ "$ref": "#/$defs/Address"
1839
+ }
1840
+ },
1841
+ "required": [
1842
+ "type"
1843
+ ],
1844
+ "additionalProperties": false
1845
+ },
1846
+ {
1847
+ "type": "object",
1848
+ "properties": {
1849
+ "label": {
1850
+ "type": "string",
1851
+ "minLength": 1,
1852
+ "maxLength": 200,
1853
+ "description": "Display label for the field"
1854
+ },
1855
+ "description": {
1856
+ "type": "string",
1857
+ "minLength": 1,
1858
+ "maxLength": 1000,
1859
+ "description": "Description or help text for the field"
1860
+ },
1861
+ "required": {
1862
+ "$ref": "#/$defs/CondExpr"
1863
+ },
1864
+ "visible": {
1865
+ "$ref": "#/$defs/CondExpr"
1866
+ },
1867
+ "type": {
1868
+ "type": "string",
1869
+ "const": "phone"
1870
+ },
1871
+ "default": {
1872
+ "$ref": "#/$defs/Phone"
1873
+ }
1874
+ },
1875
+ "required": [
1876
+ "type"
1877
+ ],
1878
+ "additionalProperties": false
1879
+ },
1880
+ {
1881
+ "type": "object",
1882
+ "properties": {
1883
+ "label": {
1884
+ "type": "string",
1885
+ "minLength": 1,
1886
+ "maxLength": 200,
1887
+ "description": "Display label for the field"
1888
+ },
1889
+ "description": {
1890
+ "type": "string",
1891
+ "minLength": 1,
1892
+ "maxLength": 1000,
1893
+ "description": "Description or help text for the field"
1894
+ },
1895
+ "required": {
1896
+ "$ref": "#/$defs/CondExpr"
1897
+ },
1898
+ "visible": {
1899
+ "$ref": "#/$defs/CondExpr"
1900
+ },
1901
+ "type": {
1902
+ "type": "string",
1903
+ "const": "duration"
1904
+ },
1905
+ "default": {
1906
+ "$ref": "#/$defs/Duration"
1907
+ }
1908
+ },
1909
+ "required": [
1910
+ "type"
1911
+ ],
1912
+ "additionalProperties": false
1913
+ },
1914
+ {
1915
+ "type": "object",
1916
+ "properties": {
1917
+ "label": {
1918
+ "type": "string",
1919
+ "minLength": 1,
1920
+ "maxLength": 200,
1921
+ "description": "Display label for the field"
1922
+ },
1923
+ "description": {
1924
+ "type": "string",
1925
+ "minLength": 1,
1926
+ "maxLength": 1000,
1927
+ "description": "Description or help text for the field"
1928
+ },
1929
+ "required": {
1930
+ "$ref": "#/$defs/CondExpr"
1931
+ },
1932
+ "visible": {
1933
+ "$ref": "#/$defs/CondExpr"
1934
+ },
1935
+ "type": {
1936
+ "type": "string",
1937
+ "const": "email"
1938
+ },
1939
+ "minLength": {
1940
+ "type": "integer",
1941
+ "minimum": 0,
1942
+ "maximum": 9007199254740991,
1943
+ "description": "Minimum length"
1944
+ },
1945
+ "maxLength": {
1946
+ "type": "integer",
1947
+ "minimum": 0,
1948
+ "maximum": 9007199254740991,
1949
+ "description": "Maximum length"
1950
+ },
1951
+ "default": {
1952
+ "type": "string",
1953
+ "description": "Default value"
1954
+ }
1955
+ },
1956
+ "required": [
1957
+ "type"
1958
+ ],
1959
+ "additionalProperties": false
1960
+ },
1961
+ {
1962
+ "type": "object",
1963
+ "properties": {
1964
+ "label": {
1965
+ "type": "string",
1966
+ "minLength": 1,
1967
+ "maxLength": 200,
1968
+ "description": "Display label for the field"
1969
+ },
1970
+ "description": {
1971
+ "type": "string",
1972
+ "minLength": 1,
1973
+ "maxLength": 1000,
1974
+ "description": "Description or help text for the field"
1975
+ },
1976
+ "required": {
1977
+ "$ref": "#/$defs/CondExpr"
1978
+ },
1979
+ "visible": {
1980
+ "$ref": "#/$defs/CondExpr"
1981
+ },
1982
+ "type": {
1983
+ "type": "string",
1984
+ "const": "uuid"
1985
+ },
1986
+ "minLength": {
1987
+ "type": "integer",
1988
+ "minimum": 0,
1989
+ "maximum": 9007199254740991,
1990
+ "description": "Minimum length"
1991
+ },
1992
+ "maxLength": {
1993
+ "type": "integer",
1994
+ "minimum": 0,
1995
+ "maximum": 9007199254740991,
1996
+ "description": "Maximum length"
1997
+ },
1998
+ "pattern": {
1999
+ "type": "string",
2000
+ "minLength": 1,
2001
+ "maxLength": 500,
2002
+ "description": "Regular expression pattern for validation"
2003
+ },
2004
+ "default": {
2005
+ "type": "string",
2006
+ "description": "Default value"
2007
+ }
2008
+ },
2009
+ "required": [
2010
+ "type"
2011
+ ],
2012
+ "additionalProperties": false
2013
+ },
2014
+ {
2015
+ "type": "object",
2016
+ "properties": {
2017
+ "label": {
2018
+ "type": "string",
2019
+ "minLength": 1,
2020
+ "maxLength": 200,
2021
+ "description": "Display label for the field"
2022
+ },
2023
+ "description": {
2024
+ "type": "string",
2025
+ "minLength": 1,
2026
+ "maxLength": 1000,
2027
+ "description": "Description or help text for the field"
2028
+ },
2029
+ "required": {
2030
+ "$ref": "#/$defs/CondExpr"
2031
+ },
2032
+ "visible": {
2033
+ "$ref": "#/$defs/CondExpr"
2034
+ },
2035
+ "type": {
2036
+ "type": "string",
2037
+ "const": "uri"
2038
+ },
2039
+ "minLength": {
2040
+ "type": "integer",
2041
+ "minimum": 0,
2042
+ "maximum": 9007199254740991,
2043
+ "description": "Minimum length"
2044
+ },
2045
+ "maxLength": {
2046
+ "type": "integer",
2047
+ "minimum": 0,
2048
+ "maximum": 9007199254740991,
2049
+ "description": "Maximum length"
2050
+ },
2051
+ "pattern": {
2052
+ "type": "string",
2053
+ "minLength": 1,
2054
+ "maxLength": 500,
2055
+ "description": "Regular expression pattern for validation"
2056
+ },
2057
+ "default": {
2058
+ "type": "string",
2059
+ "description": "Default value"
2060
+ }
2061
+ },
2062
+ "required": [
2063
+ "type"
2064
+ ],
2065
+ "additionalProperties": false
2066
+ },
2067
+ {
2068
+ "type": "object",
2069
+ "properties": {
2070
+ "label": {
2071
+ "type": "string",
2072
+ "minLength": 1,
2073
+ "maxLength": 200,
2074
+ "description": "Display label for the field"
2075
+ },
2076
+ "description": {
2077
+ "type": "string",
2078
+ "minLength": 1,
2079
+ "maxLength": 1000,
2080
+ "description": "Description or help text for the field"
2081
+ },
2082
+ "required": {
2083
+ "$ref": "#/$defs/CondExpr"
2084
+ },
2085
+ "visible": {
2086
+ "$ref": "#/$defs/CondExpr"
2087
+ },
2088
+ "type": {
2089
+ "type": "string",
2090
+ "const": "enum"
2091
+ },
2092
+ "enum": {
2093
+ "minItems": 1,
2094
+ "type": "array",
2095
+ "items": {
2096
+ "type": "object",
2097
+ "properties": {
2098
+ "value": {
2099
+ "description": "Internal option value",
2100
+ "type": [
2101
+ "string",
2102
+ "number"
2103
+ ]
2104
+ },
2105
+ "label": {
2106
+ "type": "string",
2107
+ "minLength": 1,
2108
+ "maxLength": 200,
2109
+ "description": "Human-readable label for the option in the artifact source language"
2110
+ }
2111
+ },
2112
+ "required": [
2113
+ "value"
2114
+ ],
2115
+ "additionalProperties": false
2116
+ },
2117
+ "description": "Array of allowed options for the enum field"
2118
+ },
2119
+ "default": {
2120
+ "description": "Default value",
2121
+ "type": [
2122
+ "string",
2123
+ "number"
2124
+ ]
2125
+ }
2126
+ },
2127
+ "required": [
2128
+ "type",
2129
+ "enum"
2130
+ ],
2131
+ "additionalProperties": false
2132
+ },
2133
+ {
2134
+ "type": "object",
2135
+ "properties": {
2136
+ "label": {
2137
+ "type": "string",
2138
+ "minLength": 1,
2139
+ "maxLength": 200,
2140
+ "description": "Display label for the field"
2141
+ },
2142
+ "description": {
2143
+ "type": "string",
2144
+ "minLength": 1,
2145
+ "maxLength": 1000,
2146
+ "description": "Description or help text for the field"
2147
+ },
2148
+ "required": {
2149
+ "$ref": "#/$defs/CondExpr"
2150
+ },
2151
+ "visible": {
2152
+ "$ref": "#/$defs/CondExpr"
2153
+ },
2154
+ "type": {
2155
+ "type": "string",
2156
+ "const": "date"
2157
+ },
2158
+ "min": {
2159
+ "type": "string",
2160
+ "format": "date",
2161
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
2162
+ "description": "Minimum date (ISO 8601: YYYY-MM-DD)"
2163
+ },
2164
+ "max": {
2165
+ "type": "string",
2166
+ "format": "date",
2167
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
2168
+ "description": "Maximum date (ISO 8601: YYYY-MM-DD)"
2169
+ },
2170
+ "default": {
2171
+ "type": "string",
2172
+ "format": "date",
2173
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
2174
+ "description": "Default value"
2175
+ }
2176
+ },
2177
+ "required": [
2178
+ "type"
2179
+ ],
2180
+ "additionalProperties": false
2181
+ },
2182
+ {
2183
+ "type": "object",
2184
+ "properties": {
2185
+ "label": {
2186
+ "type": "string",
2187
+ "minLength": 1,
2188
+ "maxLength": 200,
2189
+ "description": "Display label for the field"
2190
+ },
2191
+ "description": {
2192
+ "type": "string",
2193
+ "minLength": 1,
2194
+ "maxLength": 1000,
2195
+ "description": "Description or help text for the field"
2196
+ },
2197
+ "required": {
2198
+ "$ref": "#/$defs/CondExpr"
2199
+ },
2200
+ "visible": {
2201
+ "$ref": "#/$defs/CondExpr"
2202
+ },
2203
+ "type": {
2204
+ "type": "string",
2205
+ "const": "datetime"
2206
+ },
2207
+ "min": {
2208
+ "type": "string",
2209
+ "allOf": [
2210
+ {
2211
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
2212
+ },
2213
+ {
2214
+ "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$"
2215
+ }
2216
+ ],
2217
+ "description": "Minimum datetime (ISO 8601 with Z or ±HH:MM timezone)"
2218
+ },
2219
+ "max": {
2220
+ "type": "string",
2221
+ "allOf": [
2222
+ {
2223
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
2224
+ },
2225
+ {
2226
+ "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$"
2227
+ }
2228
+ ],
2229
+ "description": "Maximum datetime (ISO 8601 with Z or ±HH:MM timezone)"
2230
+ },
2231
+ "default": {
2232
+ "type": "string",
2233
+ "allOf": [
2234
+ {
2235
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
2236
+ },
2237
+ {
2238
+ "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)$"
2239
+ }
2240
+ ],
2241
+ "description": "Default value"
2242
+ }
2243
+ },
2244
+ "required": [
2245
+ "type"
2246
+ ],
2247
+ "additionalProperties": false
2248
+ },
2249
+ {
2250
+ "type": "object",
2251
+ "properties": {
2252
+ "label": {
2253
+ "type": "string",
2254
+ "minLength": 1,
2255
+ "maxLength": 200,
2256
+ "description": "Display label for the field"
2257
+ },
2258
+ "description": {
2259
+ "type": "string",
2260
+ "minLength": 1,
2261
+ "maxLength": 1000,
2262
+ "description": "Description or help text for the field"
2263
+ },
2264
+ "required": {
2265
+ "$ref": "#/$defs/CondExpr"
2266
+ },
2267
+ "visible": {
2268
+ "$ref": "#/$defs/CondExpr"
2269
+ },
2270
+ "type": {
2271
+ "type": "string",
2272
+ "const": "time"
2273
+ },
2274
+ "min": {
2275
+ "type": "string",
2276
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?$",
2277
+ "description": "Minimum time (HH:MM:SS[.fff])"
2278
+ },
2279
+ "max": {
2280
+ "type": "string",
2281
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?$",
2282
+ "description": "Maximum time (HH:MM:SS[.fff])"
2283
+ },
2284
+ "default": {
2285
+ "type": "string",
2286
+ "pattern": "^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?$",
2287
+ "description": "Default value"
2288
+ }
2289
+ },
2290
+ "required": [
2291
+ "type"
2292
+ ],
2293
+ "additionalProperties": false
2294
+ },
2295
+ {
2296
+ "type": "object",
2297
+ "properties": {
2298
+ "label": {
2299
+ "type": "string",
2300
+ "minLength": 1,
2301
+ "maxLength": 200,
2302
+ "description": "Display label for the field"
2303
+ },
2304
+ "description": {
2305
+ "type": "string",
2306
+ "minLength": 1,
2307
+ "maxLength": 1000,
2308
+ "description": "Description or help text for the field"
2309
+ },
2310
+ "required": {
2311
+ "$ref": "#/$defs/CondExpr"
2312
+ },
2313
+ "visible": {
2314
+ "$ref": "#/$defs/CondExpr"
2315
+ },
2316
+ "type": {
2317
+ "type": "string",
2318
+ "const": "person"
2319
+ },
2320
+ "default": {
2321
+ "$ref": "#/$defs/Person"
2322
+ }
2323
+ },
2324
+ "required": [
2325
+ "type"
2326
+ ],
2327
+ "additionalProperties": false
2328
+ },
2329
+ {
2330
+ "type": "object",
2331
+ "properties": {
2332
+ "label": {
2333
+ "type": "string",
2334
+ "minLength": 1,
2335
+ "maxLength": 200,
2336
+ "description": "Display label for the field"
2337
+ },
2338
+ "description": {
2339
+ "type": "string",
2340
+ "minLength": 1,
2341
+ "maxLength": 1000,
2342
+ "description": "Description or help text for the field"
2343
+ },
2344
+ "required": {
2345
+ "$ref": "#/$defs/CondExpr"
2346
+ },
2347
+ "visible": {
2348
+ "$ref": "#/$defs/CondExpr"
2349
+ },
2350
+ "type": {
2351
+ "type": "string",
2352
+ "const": "organization"
2353
+ },
2354
+ "default": {
2355
+ "$ref": "#/$defs/Organization"
2356
+ }
2357
+ },
2358
+ "required": [
2359
+ "type"
2360
+ ],
2361
+ "additionalProperties": false
2362
+ },
2363
+ {
2364
+ "type": "object",
2365
+ "properties": {
2366
+ "label": {
2367
+ "type": "string",
2368
+ "minLength": 1,
2369
+ "maxLength": 200,
2370
+ "description": "Display label for the field"
2371
+ },
2372
+ "description": {
2373
+ "type": "string",
2374
+ "minLength": 1,
2375
+ "maxLength": 1000,
2376
+ "description": "Description or help text for the field"
2377
+ },
2378
+ "required": {
2379
+ "$ref": "#/$defs/CondExpr"
2380
+ },
2381
+ "visible": {
2382
+ "$ref": "#/$defs/CondExpr"
2383
+ },
2384
+ "type": {
2385
+ "type": "string",
2386
+ "const": "identification"
2387
+ },
2388
+ "allowedTypes": {
2389
+ "type": "array",
2390
+ "items": {
2391
+ "type": "string"
2392
+ },
2393
+ "description": "Allowed ID types (e.g., passport, drivers_license)"
2394
+ },
2395
+ "default": {
2396
+ "$ref": "#/$defs/Identification"
2397
+ }
2398
+ },
2399
+ "required": [
2400
+ "type"
2401
+ ],
2402
+ "additionalProperties": false
2403
+ },
2404
+ {
2405
+ "type": "object",
2406
+ "properties": {
2407
+ "label": {
2408
+ "type": "string",
2409
+ "minLength": 1,
2410
+ "maxLength": 200,
2411
+ "description": "Display label for the field"
2412
+ },
2413
+ "description": {
2414
+ "type": "string",
2415
+ "minLength": 1,
2416
+ "maxLength": 1000,
2417
+ "description": "Description or help text for the field"
2418
+ },
2419
+ "required": {
2420
+ "$ref": "#/$defs/CondExpr"
2421
+ },
2422
+ "visible": {
2423
+ "$ref": "#/$defs/CondExpr"
2424
+ },
2425
+ "type": {
2426
+ "type": "string",
2427
+ "const": "multiselect"
2428
+ },
2429
+ "enum": {
2430
+ "minItems": 1,
2431
+ "type": "array",
2432
+ "items": {
2433
+ "type": "object",
2434
+ "properties": {
2435
+ "value": {
2436
+ "description": "Internal option value",
2437
+ "type": [
2438
+ "string",
2439
+ "number"
2440
+ ]
2441
+ },
2442
+ "label": {
2443
+ "type": "string",
2444
+ "minLength": 1,
2445
+ "maxLength": 200,
2446
+ "description": "Human-readable label for the option in the artifact source language"
2447
+ }
2448
+ },
2449
+ "required": [
2450
+ "value"
2451
+ ],
2452
+ "additionalProperties": false
2453
+ },
2454
+ "description": "Available options"
2455
+ },
2456
+ "min": {
2457
+ "type": "integer",
2458
+ "minimum": 0,
2459
+ "maximum": 9007199254740991,
2460
+ "description": "Minimum selections required"
2461
+ },
2462
+ "max": {
2463
+ "type": "integer",
2464
+ "minimum": 0,
2465
+ "maximum": 9007199254740991,
2466
+ "description": "Maximum selections allowed"
2467
+ },
2468
+ "default": {
2469
+ "type": "array",
2470
+ "items": {
2471
+ "type": [
2472
+ "string",
2473
+ "number"
2474
+ ]
2475
+ },
2476
+ "description": "Default selected values"
2477
+ }
2478
+ },
2479
+ "required": [
2480
+ "type",
2481
+ "enum"
2482
+ ],
2483
+ "additionalProperties": false
2484
+ },
2485
+ {
2486
+ "type": "object",
2487
+ "properties": {
2488
+ "label": {
2489
+ "type": "string",
2490
+ "minLength": 1,
2491
+ "maxLength": 200,
2492
+ "description": "Display label for the field"
2493
+ },
2494
+ "description": {
2495
+ "type": "string",
2496
+ "minLength": 1,
2497
+ "maxLength": 1000,
2498
+ "description": "Description or help text for the field"
2499
+ },
2500
+ "required": {
2501
+ "$ref": "#/$defs/CondExpr"
2502
+ },
2503
+ "visible": {
2504
+ "$ref": "#/$defs/CondExpr"
2505
+ },
2506
+ "type": {
2507
+ "type": "string",
2508
+ "const": "percentage"
2509
+ },
2510
+ "min": {
2511
+ "type": "number",
2512
+ "description": "Minimum value (default: 0)"
2513
+ },
2514
+ "max": {
2515
+ "type": "number",
2516
+ "description": "Maximum value (default: 100)"
2517
+ },
2518
+ "precision": {
2519
+ "type": "integer",
2520
+ "minimum": 0,
2521
+ "maximum": 9007199254740991,
2522
+ "description": "Decimal places (default: 2)"
2523
+ },
2524
+ "default": {
2525
+ "type": "number",
2526
+ "description": "Default value"
2527
+ }
2528
+ },
2529
+ "required": [
2530
+ "type"
2531
+ ],
2532
+ "additionalProperties": false
2533
+ },
2534
+ {
2535
+ "type": "object",
2536
+ "properties": {
2537
+ "label": {
2538
+ "type": "string",
2539
+ "minLength": 1,
2540
+ "maxLength": 200,
2541
+ "description": "Display label for the field"
2542
+ },
2543
+ "description": {
2544
+ "type": "string",
2545
+ "minLength": 1,
2546
+ "maxLength": 1000,
2547
+ "description": "Description or help text for the field"
2548
+ },
2549
+ "required": {
2550
+ "$ref": "#/$defs/CondExpr"
2551
+ },
2552
+ "visible": {
2553
+ "$ref": "#/$defs/CondExpr"
2554
+ },
2555
+ "type": {
2556
+ "type": "string",
2557
+ "const": "rating"
2558
+ },
2559
+ "min": {
2560
+ "type": "number",
2561
+ "description": "Minimum value (default: 1)"
2562
+ },
2563
+ "max": {
2564
+ "type": "number",
2565
+ "description": "Maximum value (default: 5)"
2566
+ },
2567
+ "step": {
2568
+ "type": "number",
2569
+ "exclusiveMinimum": 0,
2570
+ "description": "Increment step (e.g., 0.5 for half stars, default: 1)"
2571
+ },
2572
+ "default": {
2573
+ "type": "number",
2574
+ "description": "Default value"
2575
+ }
2576
+ },
2577
+ "required": [
2578
+ "type"
2579
+ ],
2580
+ "additionalProperties": false
2581
+ },
2582
+ {
2583
+ "$ref": "#/$defs/FieldsetField"
2584
+ },
2585
+ {
2586
+ "$ref": "#/$defs/ListField"
2587
+ }
2588
+ ]
2589
+ },
2590
+ "FormAnnex": {
2591
+ "type": "object",
2592
+ "properties": {
2593
+ "title": {
2594
+ "type": "string",
2595
+ "minLength": 1,
2596
+ "maxLength": 200,
2597
+ "description": "Title or heading for the annex slot"
2598
+ },
2599
+ "description": {
2600
+ "type": "string",
2601
+ "minLength": 1,
2602
+ "maxLength": 1000,
2603
+ "description": "Description of what document should be attached"
2604
+ },
2605
+ "required": {
2606
+ "$ref": "#/$defs/CondExpr"
2607
+ },
2608
+ "visible": {
2609
+ "$ref": "#/$defs/CondExpr"
2610
+ },
2611
+ "order": {
2612
+ "type": "number",
2613
+ "minimum": 0,
2614
+ "description": "Display order for rendering"
2615
+ }
2616
+ },
2617
+ "additionalProperties": false,
2618
+ "title": "FormAnnex",
2619
+ "description": "Defines an annex slot where a document must or may be attached at runtime"
2620
+ },
2621
+ "FormParty": {
2622
+ "type": "object",
2623
+ "properties": {
2624
+ "label": {
2625
+ "type": "string",
2626
+ "minLength": 1,
2627
+ "maxLength": 100,
2628
+ "description": "Display name for this role"
2629
+ },
2630
+ "description": {
2631
+ "type": "string",
2632
+ "maxLength": 500,
2633
+ "description": "Description of this role"
2634
+ },
2635
+ "partyType": {
2636
+ "anyOf": [
2637
+ {
2638
+ "type": "string",
2639
+ "const": "person"
2640
+ },
2641
+ {
2642
+ "type": "string",
2643
+ "const": "organization"
2644
+ },
2645
+ {
2646
+ "type": "string",
2647
+ "const": "any"
2648
+ }
2649
+ ],
2650
+ "description": "Constraint on party type (default: any)"
2651
+ },
2652
+ "min": {
2653
+ "type": "integer",
2654
+ "minimum": 0,
2655
+ "maximum": 9007199254740991,
2656
+ "description": "Minimum parties required (default: 1)"
2657
+ },
2658
+ "max": {
2659
+ "type": "integer",
2660
+ "minimum": 1,
2661
+ "maximum": 9007199254740991,
2662
+ "description": "Maximum parties allowed (default: 1)"
2663
+ },
2664
+ "required": {
2665
+ "$ref": "#/$defs/CondExpr"
2666
+ },
2667
+ "signature": {
2668
+ "type": "object",
2669
+ "properties": {
2670
+ "required": {
2671
+ "type": "boolean",
2672
+ "description": "Whether signature is required for this role (default: false)"
2673
+ },
2674
+ "witnesses": {
2675
+ "type": "integer",
2676
+ "minimum": 0,
2677
+ "maximum": 9007199254740991,
2678
+ "description": "Number of caller-declared witness attestations required for this signature (default: 0)"
2679
+ },
2680
+ "notarized": {
2681
+ "type": "boolean",
2682
+ "description": "Whether at least one caller-declared attesting witness must have notary status (default: false)"
2683
+ }
2684
+ },
2685
+ "additionalProperties": false,
2686
+ "title": "FormSignature",
2687
+ "description": "Design-time signature requirements for a party role"
2688
+ },
2689
+ "payment": {
2690
+ "type": "object",
2691
+ "properties": {
2692
+ "required": {
2693
+ "type": "boolean",
2694
+ "description": "Whether payment is required for this role (default: false)"
2695
+ },
2696
+ "amount": {
2697
+ "anyOf": [
2698
+ {
2699
+ "$ref": "#/$defs/Money"
2700
+ },
2701
+ {
2702
+ "type": "object",
2703
+ "properties": {
2704
+ "label": {
2705
+ "type": "string",
2706
+ "minLength": 1,
2707
+ "maxLength": 200,
2708
+ "description": "Display label for the computed value"
2709
+ },
2710
+ "description": {
2711
+ "type": "string",
2712
+ "minLength": 1,
2713
+ "maxLength": 1000,
2714
+ "description": "Description or documentation of the computed value"
2715
+ },
2716
+ "type": {
2717
+ "type": "string",
2718
+ "const": "money"
2719
+ },
2720
+ "value": {
2721
+ "type": "object",
2722
+ "properties": {
2723
+ "amount": {
2724
+ "type": "string",
2725
+ "minLength": 1,
2726
+ "maxLength": 2000,
2727
+ "description": "Expression string to evaluate"
2728
+ },
2729
+ "currency": {
2730
+ "type": "string",
2731
+ "minLength": 1,
2732
+ "maxLength": 2000,
2733
+ "description": "Expression string to evaluate"
2734
+ }
2735
+ },
2736
+ "required": [
2737
+ "amount",
2738
+ "currency"
2739
+ ],
2740
+ "additionalProperties": false,
2741
+ "description": "Money object with amount and currency expressions"
2742
+ }
2743
+ },
2744
+ "required": [
2745
+ "type",
2746
+ "value"
2747
+ ],
2748
+ "additionalProperties": false
2749
+ }
2750
+ ],
2751
+ "description": "Amount owed: a fixed Money value, or a MoneyExpression resolved from filled data at request time"
2752
+ }
2753
+ },
2754
+ "required": [
2755
+ "amount"
2756
+ ],
2757
+ "additionalProperties": false,
2758
+ "title": "FormPayment",
2759
+ "description": "Design-time payment requirement for a party role"
2760
+ }
2761
+ },
2762
+ "required": [
2763
+ "label"
2764
+ ],
2765
+ "additionalProperties": false,
2766
+ "title": "FormParty",
2767
+ "description": "Design-time party role definition. Defines what roles exist and what constraints apply when filling a form."
2768
+ },
2769
+ "Layer": {
2770
+ "oneOf": [
2771
+ {
2772
+ "type": "object",
2773
+ "properties": {
2774
+ "mimeType": {
2775
+ "type": "string",
2776
+ "minLength": 1,
2777
+ "maxLength": 100,
2778
+ "description": "MIME type of the layer content (e.g., text/markdown). Never a React composition type",
2779
+ "not": {
2780
+ "pattern": "^(?:[tT][eE][xX][tT]/[tT][sS][xX]|[tT][eE][xX][tT]/[jJ][sS][xX])$"
2781
+ }
2782
+ },
2783
+ "title": {
2784
+ "type": "string",
2785
+ "minLength": 1,
2786
+ "maxLength": 200,
2787
+ "description": "Human-readable title for this layer"
2788
+ },
2789
+ "description": {
2790
+ "type": "string",
2791
+ "minLength": 1,
2792
+ "maxLength": 2000,
2793
+ "description": "Description of what this layer represents"
2794
+ },
2795
+ "signatures": {
2796
+ "type": "object",
2797
+ "propertyNames": {
2798
+ "type": "string",
2799
+ "minLength": 1,
2800
+ "maxLength": 100,
2801
+ "description": "Slot ID"
2802
+ },
2803
+ "additionalProperties": {
2804
+ "type": "object",
2805
+ "properties": {
2806
+ "party": {
2807
+ "type": "object",
2808
+ "properties": {
2809
+ "role": {
2810
+ "type": "string",
2811
+ "minLength": 1,
2812
+ "maxLength": 100,
2813
+ "description": "Party role this slot binds to"
2814
+ },
2815
+ "index": {
2816
+ "type": "integer",
2817
+ "minimum": 0,
2818
+ "maximum": 9007199254740991,
2819
+ "description": "0-based index for multi-party roles; defaults to 0"
2820
+ }
2821
+ },
2822
+ "required": [
2823
+ "role"
2824
+ ],
2825
+ "additionalProperties": false
2826
+ },
2827
+ "type": {
2828
+ "type": "string",
2829
+ "enum": [
2830
+ "signature",
2831
+ "initials",
2832
+ "date_signed",
2833
+ "capacity",
2834
+ "printed_name"
2835
+ ],
2836
+ "description": "Type of signing field: signature/initials (glyph), date_signed, capacity (signer role/title), or printed_name"
2837
+ },
2838
+ "required": {
2839
+ "type": "boolean",
2840
+ "description": "Whether this slot must be signed. Defaults to true"
2841
+ },
2842
+ "label": {
2843
+ "type": "string",
2844
+ "minLength": 1,
2845
+ "maxLength": 200,
2846
+ "description": "Human-readable label"
2847
+ },
2848
+ "placement": {
2849
+ "anyOf": [
2850
+ {
2851
+ "type": "string",
2852
+ "const": "flow",
2853
+ "description": "In-flow: the field sits where the template content places it; located after conversion via an injected marker"
2854
+ },
2855
+ {
2856
+ "type": "object",
2857
+ "properties": {
2858
+ "page": {
2859
+ "type": "integer",
2860
+ "minimum": 1,
2861
+ "maximum": 9007199254740991,
2862
+ "description": "1-based page number"
2863
+ },
2864
+ "x": {
2865
+ "type": "number",
2866
+ "minimum": 0,
2867
+ "description": "X in points from the left page edge"
2868
+ },
2869
+ "y": {
2870
+ "type": "number",
2871
+ "minimum": 0,
2872
+ "description": "Y in points from the top page edge"
2873
+ },
2874
+ "width": {
2875
+ "type": "number",
2876
+ "minimum": 1,
2877
+ "description": "Width in points"
2878
+ },
2879
+ "height": {
2880
+ "type": "number",
2881
+ "minimum": 1,
2882
+ "description": "Height in points"
2883
+ }
2884
+ },
2885
+ "required": [
2886
+ "page",
2887
+ "x",
2888
+ "y",
2889
+ "width",
2890
+ "height"
2891
+ ],
2892
+ "additionalProperties": false,
2893
+ "title": "AbsolutePlacement"
2894
+ },
2895
+ {
2896
+ "type": "object",
2897
+ "properties": {
2898
+ "anchor": {
2899
+ "type": "object",
2900
+ "properties": {
2901
+ "text": {
2902
+ "type": "string",
2903
+ "minLength": 1,
2904
+ "maxLength": 500,
2905
+ "description": "Literal document text to find; must be unique unless occurrence is set"
2906
+ },
2907
+ "offsetX": {
2908
+ "type": "number",
2909
+ "description": "Horizontal offset in points from the left of the found text"
2910
+ },
2911
+ "offsetY": {
2912
+ "type": "number",
2913
+ "description": "Vertical offset in points from the top of the found text"
2914
+ },
2915
+ "occurrence": {
2916
+ "type": "integer",
2917
+ "minimum": 1,
2918
+ "maximum": 9007199254740991,
2919
+ "description": "1-based match index in reading order when the text repeats"
2920
+ }
2921
+ },
2922
+ "required": [
2923
+ "text"
2924
+ ],
2925
+ "additionalProperties": false
2926
+ },
2927
+ "width": {
2928
+ "type": "number",
2929
+ "minimum": 1,
2930
+ "description": "Width in points"
2931
+ },
2932
+ "height": {
2933
+ "type": "number",
2934
+ "minimum": 1,
2935
+ "description": "Height in points"
2936
+ }
2937
+ },
2938
+ "required": [
2939
+ "anchor",
2940
+ "width",
2941
+ "height"
2942
+ ],
2943
+ "additionalProperties": false,
2944
+ "title": "AnchorPlacement"
2945
+ }
2946
+ ],
2947
+ "description": "Placement: 'flow', absolute coordinates, or a text anchor"
2948
+ }
2949
+ },
2950
+ "required": [
2951
+ "party",
2952
+ "type",
2953
+ "placement"
2954
+ ],
2955
+ "additionalProperties": false,
2956
+ "title": "SignatureSlot",
2957
+ "description": "Signature slot binding a party to a placement on this layer"
2958
+ },
2959
+ "description": "Signature slots keyed by slot id"
2960
+ },
2961
+ "kind": {
2962
+ "type": "string",
2963
+ "const": "inline"
2964
+ },
2965
+ "text": {
2966
+ "type": "string",
2967
+ "minLength": 1,
2968
+ "maxLength": 1000000,
2969
+ "description": "Layer content with interpolation placeholders (e.g., {{fields.fieldName}})"
2970
+ }
2971
+ },
2972
+ "required": [
2973
+ "mimeType",
2974
+ "kind",
2975
+ "text"
2976
+ ],
2977
+ "additionalProperties": false,
2978
+ "title": "InlineLayer",
2979
+ "description": "Inline layer with embedded content"
2980
+ },
2981
+ {
2982
+ "type": "object",
2983
+ "properties": {
2984
+ "mimeType": {
2985
+ "type": "string",
2986
+ "minLength": 1,
2987
+ "maxLength": 100,
2988
+ "description": "MIME type of the layer content (e.g., text/markdown, application/pdf)"
2989
+ },
2990
+ "title": {
2991
+ "type": "string",
2992
+ "minLength": 1,
2993
+ "maxLength": 200,
2994
+ "description": "Human-readable title for this layer"
2995
+ },
2996
+ "description": {
2997
+ "type": "string",
2998
+ "minLength": 1,
2999
+ "maxLength": 2000,
3000
+ "description": "Description of what this layer represents"
3001
+ },
3002
+ "signatures": {
3003
+ "type": "object",
3004
+ "propertyNames": {
3005
+ "type": "string",
3006
+ "minLength": 1,
3007
+ "maxLength": 100,
3008
+ "description": "Slot ID"
3009
+ },
3010
+ "additionalProperties": {
3011
+ "type": "object",
3012
+ "properties": {
3013
+ "party": {
3014
+ "type": "object",
3015
+ "properties": {
3016
+ "role": {
3017
+ "type": "string",
3018
+ "minLength": 1,
3019
+ "maxLength": 100,
3020
+ "description": "Party role this slot binds to"
3021
+ },
3022
+ "index": {
3023
+ "type": "integer",
3024
+ "minimum": 0,
3025
+ "maximum": 9007199254740991,
3026
+ "description": "0-based index for multi-party roles; defaults to 0"
3027
+ }
3028
+ },
3029
+ "required": [
3030
+ "role"
3031
+ ],
3032
+ "additionalProperties": false
3033
+ },
3034
+ "type": {
3035
+ "type": "string",
3036
+ "enum": [
3037
+ "signature",
3038
+ "initials",
3039
+ "date_signed",
3040
+ "capacity",
3041
+ "printed_name"
3042
+ ],
3043
+ "description": "Type of signing field: signature/initials (glyph), date_signed, capacity (signer role/title), or printed_name"
3044
+ },
3045
+ "required": {
3046
+ "type": "boolean",
3047
+ "description": "Whether this slot must be signed. Defaults to true"
3048
+ },
3049
+ "label": {
3050
+ "type": "string",
3051
+ "minLength": 1,
3052
+ "maxLength": 200,
3053
+ "description": "Human-readable label"
3054
+ },
3055
+ "placement": {
3056
+ "anyOf": [
3057
+ {
3058
+ "type": "string",
3059
+ "const": "flow",
3060
+ "description": "In-flow: the field sits where the template content places it; located after conversion via an injected marker"
3061
+ },
3062
+ {
3063
+ "type": "object",
3064
+ "properties": {
3065
+ "page": {
3066
+ "type": "integer",
3067
+ "minimum": 1,
3068
+ "maximum": 9007199254740991,
3069
+ "description": "1-based page number"
3070
+ },
3071
+ "x": {
3072
+ "type": "number",
3073
+ "minimum": 0,
3074
+ "description": "X in points from the left page edge"
3075
+ },
3076
+ "y": {
3077
+ "type": "number",
3078
+ "minimum": 0,
3079
+ "description": "Y in points from the top page edge"
3080
+ },
3081
+ "width": {
3082
+ "type": "number",
3083
+ "minimum": 1,
3084
+ "description": "Width in points"
3085
+ },
3086
+ "height": {
3087
+ "type": "number",
3088
+ "minimum": 1,
3089
+ "description": "Height in points"
3090
+ }
3091
+ },
3092
+ "required": [
3093
+ "page",
3094
+ "x",
3095
+ "y",
3096
+ "width",
3097
+ "height"
3098
+ ],
3099
+ "additionalProperties": false,
3100
+ "title": "AbsolutePlacement"
3101
+ },
3102
+ {
3103
+ "type": "object",
3104
+ "properties": {
3105
+ "anchor": {
3106
+ "type": "object",
3107
+ "properties": {
3108
+ "text": {
3109
+ "type": "string",
3110
+ "minLength": 1,
3111
+ "maxLength": 500,
3112
+ "description": "Literal document text to find; must be unique unless occurrence is set"
3113
+ },
3114
+ "offsetX": {
3115
+ "type": "number",
3116
+ "description": "Horizontal offset in points from the left of the found text"
3117
+ },
3118
+ "offsetY": {
3119
+ "type": "number",
3120
+ "description": "Vertical offset in points from the top of the found text"
3121
+ },
3122
+ "occurrence": {
3123
+ "type": "integer",
3124
+ "minimum": 1,
3125
+ "maximum": 9007199254740991,
3126
+ "description": "1-based match index in reading order when the text repeats"
3127
+ }
3128
+ },
3129
+ "required": [
3130
+ "text"
3131
+ ],
3132
+ "additionalProperties": false
3133
+ },
3134
+ "width": {
3135
+ "type": "number",
3136
+ "minimum": 1,
3137
+ "description": "Width in points"
3138
+ },
3139
+ "height": {
3140
+ "type": "number",
3141
+ "minimum": 1,
3142
+ "description": "Height in points"
3143
+ }
3144
+ },
3145
+ "required": [
3146
+ "anchor",
3147
+ "width",
3148
+ "height"
3149
+ ],
3150
+ "additionalProperties": false,
3151
+ "title": "AnchorPlacement"
3152
+ }
3153
+ ],
3154
+ "description": "Placement: 'flow', absolute coordinates, or a text anchor"
3155
+ }
3156
+ },
3157
+ "required": [
3158
+ "party",
3159
+ "type",
3160
+ "placement"
3161
+ ],
3162
+ "additionalProperties": false,
3163
+ "title": "SignatureSlot",
3164
+ "description": "Signature slot binding a party to a placement on this layer"
3165
+ },
3166
+ "description": "Signature slots keyed by slot id"
3167
+ },
3168
+ "kind": {
3169
+ "type": "string",
3170
+ "const": "file"
3171
+ },
3172
+ "path": {
3173
+ "type": "string",
3174
+ "minLength": 1,
3175
+ "maxLength": 1000,
3176
+ "description": "Logical resolver path; the CLI resolves file-backed artifacts from their directory and stdin artifacts from cwd"
3177
+ },
3178
+ "checksum": {
3179
+ "type": "string",
3180
+ "pattern": "^sha256:[a-f0-9]{64}$",
3181
+ "description": "SHA-256 checksum for integrity verification"
3182
+ },
3183
+ "font": {
3184
+ "type": "object",
3185
+ "properties": {
3186
+ "path": {
3187
+ "type": "string",
3188
+ "minLength": 1,
3189
+ "maxLength": 1000,
3190
+ "description": "Logical resolver path of a TrueType-outline font program (.ttf), resolved like the layer path"
3191
+ },
3192
+ "checksum": {
3193
+ "type": "string",
3194
+ "pattern": "^sha256:[a-f0-9]{64}$",
3195
+ "description": "SHA-256 checksum for integrity verification"
3196
+ }
3197
+ },
3198
+ "required": [
3199
+ "path"
3200
+ ],
3201
+ "additionalProperties": false,
3202
+ "title": "LayerFont",
3203
+ "description": "Font for filled values and overlay text; PDF layers only. It is tried after a font supplied at render time and before the form's own fonts"
3204
+ },
3205
+ "format": {
3206
+ "type": "object",
3207
+ "properties": {
3208
+ "money": {
3209
+ "type": "object",
3210
+ "properties": {
3211
+ "currencyDisplay": {
3212
+ "type": "string",
3213
+ "const": "none",
3214
+ "description": "`none` prints the amount without a currency symbol or code, for a template that pre-prints the symbol beside each money box"
3215
+ }
3216
+ },
3217
+ "required": [
3218
+ "currencyDisplay"
3219
+ ],
3220
+ "additionalProperties": false,
3221
+ "title": "LayerMoneyFormat",
3222
+ "description": "How a PDF layer presents money values"
3223
+ }
3224
+ },
3225
+ "additionalProperties": false,
3226
+ "title": "LayerFormat",
3227
+ "description": "Presentation the template requires of filled values; PDF layers only. It applies to this layer alone, not to a layer that reuses its bindings"
3228
+ },
3229
+ "bindings": {
3230
+ "type": "object",
3231
+ "propertyNames": {
3232
+ "type": "string",
3233
+ "minLength": 1,
3234
+ "maxLength": 500,
3235
+ "description": "AcroForm field name in the PDF template, fully qualified (e.g., topmostSubform[0].Page1[0].f1_01[0])"
3236
+ },
3237
+ "additionalProperties": {
3238
+ "type": "string",
3239
+ "minLength": 1,
3240
+ "maxLength": 500,
3241
+ "description": "Asterdoc path whose value fills the field (e.g., fields.name, parties.buyer.name)"
3242
+ },
3243
+ "description": "PDF layers only. Maps each AcroForm field name (key) to the Asterdoc path (value) that fills it"
3244
+ },
3245
+ "bindingsFrom": {
3246
+ "type": "string",
3247
+ "minLength": 1,
3248
+ "maxLength": 128,
3249
+ "description": "PDF layers only. Key of a sibling PDF layer whose bindings this layer reuses"
3250
+ }
3251
+ },
3252
+ "required": [
3253
+ "mimeType",
3254
+ "kind",
3255
+ "path"
3256
+ ],
3257
+ "additionalProperties": false,
3258
+ "title": "FileLayer",
3259
+ "description": "File-backed layer with path reference"
3260
+ }
3261
+ ],
3262
+ "title": "Layer",
3263
+ "description": "Layer specification — inline content or file reference",
3264
+ "allOf": [
3265
+ {
3266
+ "if": {
3267
+ "required": [
3268
+ "font"
3269
+ ]
3270
+ },
3271
+ "then": {
3272
+ "properties": {
3273
+ "mimeType": {
3274
+ "pattern": "^[aA][pP][pP][lL][iI][cC][aA][tT][iI][oO][nN]/[pP][dD][fF]$"
3275
+ }
3276
+ }
3277
+ }
3278
+ },
3279
+ {
3280
+ "if": {
3281
+ "required": [
3282
+ "format"
3283
+ ]
3284
+ },
3285
+ "then": {
3286
+ "properties": {
3287
+ "mimeType": {
3288
+ "pattern": "^[aA][pP][pP][lL][iI][cC][aA][tT][iI][oO][nN]/[pP][dD][fF]$"
3289
+ }
3290
+ }
3291
+ }
3292
+ },
3293
+ {
3294
+ "if": {
3295
+ "required": [
3296
+ "bindings"
3297
+ ]
3298
+ },
3299
+ "then": {
3300
+ "properties": {
3301
+ "mimeType": {
3302
+ "pattern": "^[aA][pP][pP][lL][iI][cC][aA][tT][iI][oO][nN]/[pP][dD][fF]$"
3303
+ }
3304
+ }
3305
+ }
3306
+ },
3307
+ {
3308
+ "if": {
3309
+ "required": [
3310
+ "bindingsFrom"
3311
+ ]
3312
+ },
3313
+ "then": {
3314
+ "properties": {
3315
+ "mimeType": {
3316
+ "pattern": "^[aA][pP][pP][lL][iI][cC][aA][tT][iI][oO][nN]/[pP][dD][fF]$"
3317
+ }
3318
+ }
3319
+ }
3320
+ }
3321
+ ]
3322
+ },
3323
+ "Address": {
3324
+ "type": "object",
3325
+ "properties": {
3326
+ "line1": {
3327
+ "type": "string",
3328
+ "minLength": 1,
3329
+ "maxLength": 200,
3330
+ "description": "Primary address line"
3331
+ },
3332
+ "line2": {
3333
+ "type": "string",
3334
+ "maxLength": 200,
3335
+ "description": "Secondary address line"
3336
+ },
3337
+ "locality": {
3338
+ "type": "string",
3339
+ "minLength": 1,
3340
+ "maxLength": 200,
3341
+ "description": "City or locality name"
3342
+ },
3343
+ "region": {
3344
+ "type": "string",
3345
+ "minLength": 1,
3346
+ "maxLength": 100,
3347
+ "description": "State, province, or region name"
3348
+ },
3349
+ "postalCode": {
3350
+ "type": "string",
3351
+ "minLength": 3,
3352
+ "maxLength": 20,
3353
+ "pattern": "^[A-Z0-9\\s-]+$",
3354
+ "description": "Postal or ZIP code"
3355
+ },
3356
+ "country": {
3357
+ "type": "string",
3358
+ "minLength": 2,
3359
+ "maxLength": 100,
3360
+ "description": "ISO 3166-1 country code (e.g., \"US\", \"GB\", \"FRA\") or full country name"
3361
+ }
3362
+ },
3363
+ "required": [
3364
+ "line1",
3365
+ "locality",
3366
+ "region",
3367
+ "postalCode",
3368
+ "country"
3369
+ ],
3370
+ "additionalProperties": false,
3371
+ "title": "Address",
3372
+ "description": "Physical address with street, locality, region, postal code, and country"
3373
+ },
3374
+ "Attachment": {
3375
+ "type": "object",
3376
+ "properties": {
3377
+ "name": {
3378
+ "type": "string",
3379
+ "minLength": 1,
3380
+ "maxLength": 255,
3381
+ "description": "Original file name"
3382
+ },
3383
+ "mimeType": {
3384
+ "type": "string",
3385
+ "minLength": 1,
3386
+ "maxLength": 100,
3387
+ "description": "MIME type of the attached file"
3388
+ },
3389
+ "checksum": {
3390
+ "type": "string",
3391
+ "pattern": "^sha256:[a-f0-9]{64}$",
3392
+ "description": "SHA-256 checksum for integrity verification"
3393
+ }
3394
+ },
3395
+ "required": [
3396
+ "name",
3397
+ "mimeType"
3398
+ ],
3399
+ "additionalProperties": false,
3400
+ "title": "Attachment",
3401
+ "description": "Attachment data representing an attached document. The key in the record is the annex identifier (the key from form.annexes)."
3402
+ },
3403
+ "Bbox": {
3404
+ "type": "object",
3405
+ "properties": {
3406
+ "southWest": {
3407
+ "description": "Southwest corner coordinate (minimum latitude and longitude)",
3408
+ "$ref": "#/$defs/Coordinate"
3409
+ },
3410
+ "northEast": {
3411
+ "description": "Northeast corner coordinate (maximum latitude and longitude)",
3412
+ "$ref": "#/$defs/Coordinate"
3413
+ }
3414
+ },
3415
+ "required": [
3416
+ "southWest",
3417
+ "northEast"
3418
+ ],
3419
+ "additionalProperties": false,
3420
+ "title": "Bbox",
3421
+ "description": "Geographic bounding box defined by southwest (minimum) and northeast (maximum) corner coordinates"
3422
+ },
3423
+ "Coordinate": {
3424
+ "type": "object",
3425
+ "properties": {
3426
+ "lat": {
3427
+ "type": "number",
3428
+ "minimum": -90,
3429
+ "maximum": 90,
3430
+ "description": "Latitude in decimal degrees (WGS84), range -90 (South Pole) to 90 (North Pole)"
3431
+ },
3432
+ "lon": {
3433
+ "type": "number",
3434
+ "minimum": -180,
3435
+ "maximum": 180,
3436
+ "description": "Longitude in decimal degrees (WGS84), range -180 (west) to 180 (east)"
3437
+ }
3438
+ },
3439
+ "required": [
3440
+ "lat",
3441
+ "lon"
3442
+ ],
3443
+ "additionalProperties": false,
3444
+ "title": "Coordinate",
3445
+ "description": "Geographic coordinate (WGS84) with latitude and longitude in decimal degrees"
3446
+ },
3447
+ "Duration": {
3448
+ "type": "string",
3449
+ "pattern": "^P(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(?:T(?=\\d)(\\d+H)?(\\d+M)?(\\d+(?:\\.\\d+)?S)?)?$",
3450
+ "title": "Duration",
3451
+ "description": "ISO 8601 duration string representing a time period. Format: P[n]Y[n]M[n]W[n]DT[n]H[n]M[n]S where P indicates period, T separates date and time components. Examples: P1Y (1 year), P3M (3 months), P2W (2 weeks), P1DT12H (1 day 12 hours), PT30M (30 minutes), PT5S (5 seconds)"
3452
+ },
3453
+ "Identification": {
3454
+ "type": "object",
3455
+ "properties": {
3456
+ "type": {
3457
+ "type": "string",
3458
+ "minLength": 1,
3459
+ "maxLength": 50,
3460
+ "description": "Type of identification document (e.g., ssn, passport, license, ein)"
3461
+ },
3462
+ "number": {
3463
+ "type": "string",
3464
+ "minLength": 1,
3465
+ "maxLength": 100,
3466
+ "description": "Identification number or identifier"
3467
+ },
3468
+ "issuer": {
3469
+ "type": "string",
3470
+ "minLength": 1,
3471
+ "maxLength": 100,
3472
+ "description": "Issuing authority, country, or state (e.g., US, CA, DMV)"
3473
+ },
3474
+ "issueDate": {
3475
+ "type": "string",
3476
+ "format": "date",
3477
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
3478
+ "description": "Issue date in ISO 8601 format (YYYY-MM-DD)"
3479
+ },
3480
+ "expiryDate": {
3481
+ "type": "string",
3482
+ "format": "date",
3483
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
3484
+ "description": "Expiry date in ISO 8601 format (YYYY-MM-DD)"
3485
+ }
3486
+ },
3487
+ "required": [
3488
+ "type",
3489
+ "number"
3490
+ ],
3491
+ "additionalProperties": false,
3492
+ "title": "Identification",
3493
+ "description": "Identification document with type, number, issuer, and optional issue and expiry dates"
3494
+ },
3495
+ "Money": {
3496
+ "type": "object",
3497
+ "properties": {
3498
+ "amount": {
3499
+ "type": "number",
3500
+ "description": "Monetary amount expressed in decimal form (e.g., 99.99 for USD). Negative values allowed for debts/credits"
3501
+ },
3502
+ "currency": {
3503
+ "type": "string",
3504
+ "minLength": 3,
3505
+ "maxLength": 3,
3506
+ "pattern": "^[A-Z]{3}$",
3507
+ "description": "ISO 4217 alpha-3 currency code (e.g., USD, EUR, GBP)"
3508
+ }
3509
+ },
3510
+ "required": [
3511
+ "amount",
3512
+ "currency"
3513
+ ],
3514
+ "additionalProperties": false,
3515
+ "title": "Money",
3516
+ "description": "Monetary value with currency code. Represents an amount in a specific currency, supporting both positive and negative values"
3517
+ },
3518
+ "Metadata": {
3519
+ "type": "object",
3520
+ "propertyNames": {
3521
+ "type": "string",
3522
+ "minLength": 1,
3523
+ "maxLength": 100,
3524
+ "pattern": "^[A-Za-z0-9]([A-Za-z0-9]|-[A-Za-z0-9])*$",
3525
+ "description": "Metadata key identifier. Must start with alphanumeric character and can contain alphanumeric characters and hyphens"
3526
+ },
3527
+ "additionalProperties": {
3528
+ "anyOf": [
3529
+ {
3530
+ "type": "string",
3531
+ "maxLength": 500,
3532
+ "description": "Metadata value as a string (max 500 characters)"
3533
+ },
3534
+ {
3535
+ "type": "number",
3536
+ "description": "Metadata value as a number"
3537
+ },
3538
+ {
3539
+ "type": "boolean",
3540
+ "description": "Metadata value as a boolean"
3541
+ },
3542
+ {
3543
+ "type": "null",
3544
+ "description": "Metadata value as null"
3545
+ }
3546
+ ]
3547
+ },
3548
+ "title": "Metadata",
3549
+ "description": "Custom key-value pairs for storing domain-specific or organizational metadata. Keys must be alphanumeric with hyphens, values can be strings, numbers, booleans, or null"
3550
+ },
3551
+ "Organization": {
3552
+ "type": "object",
3553
+ "properties": {
3554
+ "name": {
3555
+ "type": "string",
3556
+ "minLength": 1,
3557
+ "maxLength": 200,
3558
+ "description": "Organization name"
3559
+ },
3560
+ "legalName": {
3561
+ "type": "string",
3562
+ "minLength": 1,
3563
+ "maxLength": 200,
3564
+ "description": "Legal or registered name of the organization"
3565
+ },
3566
+ "domicile": {
3567
+ "type": "string",
3568
+ "minLength": 1,
3569
+ "maxLength": 100,
3570
+ "description": "Domicile"
3571
+ },
3572
+ "entityType": {
3573
+ "type": "string",
3574
+ "minLength": 1,
3575
+ "maxLength": 100,
3576
+ "description": "Legal entity type of the organization"
3577
+ },
3578
+ "entityId": {
3579
+ "type": "string",
3580
+ "minLength": 1,
3581
+ "maxLength": 100,
3582
+ "description": "Business identification number"
3583
+ },
3584
+ "taxId": {
3585
+ "type": "string",
3586
+ "minLength": 1,
3587
+ "maxLength": 100,
3588
+ "description": "Tax identification number"
3589
+ }
3590
+ },
3591
+ "required": [
3592
+ "name"
3593
+ ],
3594
+ "additionalProperties": false,
3595
+ "title": "Organization",
3596
+ "description": "Organization with legal details and identification"
3597
+ },
3598
+ "Person": {
3599
+ "type": "object",
3600
+ "properties": {
3601
+ "name": {
3602
+ "type": "string",
3603
+ "minLength": 1,
3604
+ "maxLength": 200,
3605
+ "description": "Person's full name (complete name as a single string)"
3606
+ },
3607
+ "title": {
3608
+ "type": "string",
3609
+ "minLength": 1,
3610
+ "maxLength": 50,
3611
+ "description": "Name prefix or title (e.g., Mr., Mrs., Dr., Prof.)"
3612
+ },
3613
+ "firstName": {
3614
+ "type": "string",
3615
+ "minLength": 1,
3616
+ "maxLength": 100,
3617
+ "description": "Person's first or given name"
3618
+ },
3619
+ "middleName": {
3620
+ "type": "string",
3621
+ "minLength": 1,
3622
+ "maxLength": 100,
3623
+ "description": "Person's middle name or initial"
3624
+ },
3625
+ "lastName": {
3626
+ "type": "string",
3627
+ "minLength": 1,
3628
+ "maxLength": 100,
3629
+ "description": "Person's last name or surname"
3630
+ },
3631
+ "suffix": {
3632
+ "type": "string",
3633
+ "minLength": 1,
3634
+ "maxLength": 50,
3635
+ "description": "Name suffix (e.g., Jr., Sr., III, Esq.)"
3636
+ }
3637
+ },
3638
+ "required": [
3639
+ "name"
3640
+ ],
3641
+ "additionalProperties": false,
3642
+ "title": "Person",
3643
+ "description": "Person with name (required) and optional name components (title, first name, middle name, last name, suffix)"
3644
+ },
3645
+ "Phone": {
3646
+ "type": "object",
3647
+ "properties": {
3648
+ "number": {
3649
+ "type": "string",
3650
+ "minLength": 8,
3651
+ "maxLength": 16,
3652
+ "pattern": "^\\+[1-9]\\d{1,14}$",
3653
+ "description": "Phone number in E.164 international format (e.g., +14155552671)"
3654
+ },
3655
+ "type": {
3656
+ "type": "string",
3657
+ "minLength": 1,
3658
+ "maxLength": 50,
3659
+ "description": "Type or category of phone number (e.g., mobile, work, home)"
3660
+ },
3661
+ "extension": {
3662
+ "type": "string",
3663
+ "minLength": 1,
3664
+ "maxLength": 20,
3665
+ "description": "Phone extension or extension number"
3666
+ }
3667
+ },
3668
+ "required": [
3669
+ "number"
3670
+ ],
3671
+ "additionalProperties": false,
3672
+ "title": "Phone",
3673
+ "description": "Phone number in E.164 international format with optional type and extension"
3674
+ },
3675
+ "Signature": {
3676
+ "type": "object",
3677
+ "properties": {
3678
+ "image": {
3679
+ "type": "string",
3680
+ "minLength": 1,
3681
+ "description": "Base64-encoded signature image or data URI"
3682
+ },
3683
+ "timestamp": {
3684
+ "type": "string",
3685
+ "format": "date-time",
3686
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
3687
+ "description": "ISO 8601 date-time when the signature was captured"
3688
+ },
3689
+ "method": {
3690
+ "anyOf": [
3691
+ {
3692
+ "type": "string",
3693
+ "const": "drawn"
3694
+ },
3695
+ {
3696
+ "type": "string",
3697
+ "const": "typed"
3698
+ },
3699
+ {
3700
+ "type": "string",
3701
+ "const": "uploaded"
3702
+ },
3703
+ {
3704
+ "type": "string",
3705
+ "const": "certificate"
3706
+ }
3707
+ ],
3708
+ "description": "Method used to capture the signature"
3709
+ },
3710
+ "type": {
3711
+ "default": "signature",
3712
+ "description": "Whether this is a full signature or initials",
3713
+ "anyOf": [
3714
+ {
3715
+ "type": "string",
3716
+ "const": "signature"
3717
+ },
3718
+ {
3719
+ "type": "string",
3720
+ "const": "initials"
3721
+ }
3722
+ ]
3723
+ },
3724
+ "metadata": {
3725
+ "type": "object",
3726
+ "propertyNames": {
3727
+ "type": "string"
3728
+ },
3729
+ "additionalProperties": {},
3730
+ "description": "Additional metadata (IP address, device info, etc.)"
3731
+ }
3732
+ },
3733
+ "required": [
3734
+ "timestamp",
3735
+ "method"
3736
+ ],
3737
+ "additionalProperties": false,
3738
+ "title": "Signature",
3739
+ "description": "Captured signature data containing the signature image, timestamp, capture method, and optional metadata."
3740
+ },
3741
+ "CondExpr": {
3742
+ "anyOf": [
3743
+ {
3744
+ "type": "boolean",
3745
+ "description": "Literal boolean value"
3746
+ },
3747
+ {
3748
+ "type": "string",
3749
+ "minLength": 1,
3750
+ "maxLength": 2000,
3751
+ "description": "Expression string - either inline expression or reference to a defs key"
3752
+ }
3753
+ ],
3754
+ "title": "CondExpr",
3755
+ "description": "Conditional expression: boolean literal or expression string"
3756
+ },
3757
+ "DefsSection": {
3758
+ "type": "object",
3759
+ "propertyNames": {
3760
+ "type": "string",
3761
+ "minLength": 1,
3762
+ "maxLength": 100,
3763
+ "pattern": "^[a-z][a-zA-Z0-9_]*$",
3764
+ "description": "Definition identifier (camelCase, starts with lowercase letter)"
3765
+ },
3766
+ "additionalProperties": {
3767
+ "oneOf": [
3768
+ {
3769
+ "type": "object",
3770
+ "properties": {
3771
+ "label": {
3772
+ "type": "string",
3773
+ "minLength": 1,
3774
+ "maxLength": 200,
3775
+ "description": "Display label for the computed value"
3776
+ },
3777
+ "description": {
3778
+ "type": "string",
3779
+ "minLength": 1,
3780
+ "maxLength": 1000,
3781
+ "description": "Description or documentation of the computed value"
3782
+ },
3783
+ "type": {
3784
+ "type": "string",
3785
+ "const": "boolean"
3786
+ },
3787
+ "value": {
3788
+ "type": "string",
3789
+ "minLength": 1,
3790
+ "maxLength": 2000,
3791
+ "description": "Expression that evaluates to a boolean"
3792
+ }
3793
+ },
3794
+ "required": [
3795
+ "type",
3796
+ "value"
3797
+ ],
3798
+ "additionalProperties": false
3799
+ },
3800
+ {
3801
+ "type": "object",
3802
+ "properties": {
3803
+ "label": {
3804
+ "type": "string",
3805
+ "minLength": 1,
3806
+ "maxLength": 200,
3807
+ "description": "Display label for the computed value"
3808
+ },
3809
+ "description": {
3810
+ "type": "string",
3811
+ "minLength": 1,
3812
+ "maxLength": 1000,
3813
+ "description": "Description or documentation of the computed value"
3814
+ },
3815
+ "type": {
3816
+ "type": "string",
3817
+ "const": "string"
3818
+ },
3819
+ "value": {
3820
+ "type": "string",
3821
+ "minLength": 1,
3822
+ "maxLength": 2000,
3823
+ "description": "Expression that evaluates to a string"
3824
+ }
3825
+ },
3826
+ "required": [
3827
+ "type",
3828
+ "value"
3829
+ ],
3830
+ "additionalProperties": false
3831
+ },
3832
+ {
3833
+ "type": "object",
3834
+ "properties": {
3835
+ "label": {
3836
+ "type": "string",
3837
+ "minLength": 1,
3838
+ "maxLength": 200,
3839
+ "description": "Display label for the computed value"
3840
+ },
3841
+ "description": {
3842
+ "type": "string",
3843
+ "minLength": 1,
3844
+ "maxLength": 1000,
3845
+ "description": "Description or documentation of the computed value"
3846
+ },
3847
+ "type": {
3848
+ "type": "string",
3849
+ "const": "number"
3850
+ },
3851
+ "value": {
3852
+ "type": "string",
3853
+ "minLength": 1,
3854
+ "maxLength": 2000,
3855
+ "description": "Expression that evaluates to a number"
3856
+ }
3857
+ },
3858
+ "required": [
3859
+ "type",
3860
+ "value"
3861
+ ],
3862
+ "additionalProperties": false
3863
+ },
3864
+ {
3865
+ "type": "object",
3866
+ "properties": {
3867
+ "label": {
3868
+ "type": "string",
3869
+ "minLength": 1,
3870
+ "maxLength": 200,
3871
+ "description": "Display label for the computed value"
3872
+ },
3873
+ "description": {
3874
+ "type": "string",
3875
+ "minLength": 1,
3876
+ "maxLength": 1000,
3877
+ "description": "Description or documentation of the computed value"
3878
+ },
3879
+ "type": {
3880
+ "type": "string",
3881
+ "const": "integer"
3882
+ },
3883
+ "value": {
3884
+ "type": "string",
3885
+ "minLength": 1,
3886
+ "maxLength": 2000,
3887
+ "description": "Expression that evaluates to an integer"
3888
+ }
3889
+ },
3890
+ "required": [
3891
+ "type",
3892
+ "value"
3893
+ ],
3894
+ "additionalProperties": false
3895
+ },
3896
+ {
3897
+ "type": "object",
3898
+ "properties": {
3899
+ "label": {
3900
+ "type": "string",
3901
+ "minLength": 1,
3902
+ "maxLength": 200,
3903
+ "description": "Display label for the computed value"
3904
+ },
3905
+ "description": {
3906
+ "type": "string",
3907
+ "minLength": 1,
3908
+ "maxLength": 1000,
3909
+ "description": "Description or documentation of the computed value"
3910
+ },
3911
+ "type": {
3912
+ "type": "string",
3913
+ "const": "percentage"
3914
+ },
3915
+ "value": {
3916
+ "type": "string",
3917
+ "minLength": 1,
3918
+ "maxLength": 2000,
3919
+ "description": "Expression that evaluates to a percentage (0-100)"
3920
+ }
3921
+ },
3922
+ "required": [
3923
+ "type",
3924
+ "value"
3925
+ ],
3926
+ "additionalProperties": false
3927
+ },
3928
+ {
3929
+ "type": "object",
3930
+ "properties": {
3931
+ "label": {
3932
+ "type": "string",
3933
+ "minLength": 1,
3934
+ "maxLength": 200,
3935
+ "description": "Display label for the computed value"
3936
+ },
3937
+ "description": {
3938
+ "type": "string",
3939
+ "minLength": 1,
3940
+ "maxLength": 1000,
3941
+ "description": "Description or documentation of the computed value"
3942
+ },
3943
+ "type": {
3944
+ "type": "string",
3945
+ "const": "rating"
3946
+ },
3947
+ "value": {
3948
+ "type": "string",
3949
+ "minLength": 1,
3950
+ "maxLength": 2000,
3951
+ "description": "Expression that evaluates to a rating value"
3952
+ }
3953
+ },
3954
+ "required": [
3955
+ "type",
3956
+ "value"
3957
+ ],
3958
+ "additionalProperties": false
3959
+ },
3960
+ {
3961
+ "type": "object",
3962
+ "properties": {
3963
+ "label": {
3964
+ "type": "string",
3965
+ "minLength": 1,
3966
+ "maxLength": 200,
3967
+ "description": "Display label for the computed value"
3968
+ },
3969
+ "description": {
3970
+ "type": "string",
3971
+ "minLength": 1,
3972
+ "maxLength": 1000,
3973
+ "description": "Description or documentation of the computed value"
3974
+ },
3975
+ "type": {
3976
+ "type": "string",
3977
+ "const": "date"
3978
+ },
3979
+ "value": {
3980
+ "type": "string",
3981
+ "minLength": 1,
3982
+ "maxLength": 2000,
3983
+ "description": "Expression that evaluates to an ISO 8601 date (YYYY-MM-DD)"
3984
+ }
3985
+ },
3986
+ "required": [
3987
+ "type",
3988
+ "value"
3989
+ ],
3990
+ "additionalProperties": false
3991
+ },
3992
+ {
3993
+ "type": "object",
3994
+ "properties": {
3995
+ "label": {
3996
+ "type": "string",
3997
+ "minLength": 1,
3998
+ "maxLength": 200,
3999
+ "description": "Display label for the computed value"
4000
+ },
4001
+ "description": {
4002
+ "type": "string",
4003
+ "minLength": 1,
4004
+ "maxLength": 1000,
4005
+ "description": "Description or documentation of the computed value"
4006
+ },
4007
+ "type": {
4008
+ "type": "string",
4009
+ "const": "time"
4010
+ },
4011
+ "value": {
4012
+ "type": "string",
4013
+ "minLength": 1,
4014
+ "maxLength": 2000,
4015
+ "description": "Expression that evaluates to a time (HH:MM:SS)"
4016
+ }
4017
+ },
4018
+ "required": [
4019
+ "type",
4020
+ "value"
4021
+ ],
4022
+ "additionalProperties": false
4023
+ },
4024
+ {
4025
+ "type": "object",
4026
+ "properties": {
4027
+ "label": {
4028
+ "type": "string",
4029
+ "minLength": 1,
4030
+ "maxLength": 200,
4031
+ "description": "Display label for the computed value"
4032
+ },
4033
+ "description": {
4034
+ "type": "string",
4035
+ "minLength": 1,
4036
+ "maxLength": 1000,
4037
+ "description": "Description or documentation of the computed value"
4038
+ },
4039
+ "type": {
4040
+ "type": "string",
4041
+ "const": "datetime"
4042
+ },
4043
+ "value": {
4044
+ "type": "string",
4045
+ "minLength": 1,
4046
+ "maxLength": 2000,
4047
+ "description": "Expression that evaluates to an ISO 8601 datetime"
4048
+ }
4049
+ },
4050
+ "required": [
4051
+ "type",
4052
+ "value"
4053
+ ],
4054
+ "additionalProperties": false
4055
+ },
4056
+ {
4057
+ "type": "object",
4058
+ "properties": {
4059
+ "label": {
4060
+ "type": "string",
4061
+ "minLength": 1,
4062
+ "maxLength": 200,
4063
+ "description": "Display label for the computed value"
4064
+ },
4065
+ "description": {
4066
+ "type": "string",
4067
+ "minLength": 1,
4068
+ "maxLength": 1000,
4069
+ "description": "Description or documentation of the computed value"
4070
+ },
4071
+ "type": {
4072
+ "type": "string",
4073
+ "const": "duration"
4074
+ },
4075
+ "value": {
4076
+ "type": "string",
4077
+ "minLength": 1,
4078
+ "maxLength": 2000,
4079
+ "description": "Expression that evaluates to an ISO 8601 duration string"
4080
+ }
4081
+ },
4082
+ "required": [
4083
+ "type",
4084
+ "value"
4085
+ ],
4086
+ "additionalProperties": false
4087
+ },
4088
+ {
4089
+ "type": "object",
4090
+ "properties": {
4091
+ "label": {
4092
+ "type": "string",
4093
+ "minLength": 1,
4094
+ "maxLength": 200,
4095
+ "description": "Display label for the computed value"
4096
+ },
4097
+ "description": {
4098
+ "type": "string",
4099
+ "minLength": 1,
4100
+ "maxLength": 1000,
4101
+ "description": "Description or documentation of the computed value"
4102
+ },
4103
+ "type": {
4104
+ "type": "string",
4105
+ "const": "money"
4106
+ },
4107
+ "value": {
4108
+ "type": "object",
4109
+ "properties": {
4110
+ "amount": {
4111
+ "type": "string",
4112
+ "minLength": 1,
4113
+ "maxLength": 2000,
4114
+ "description": "Expression string to evaluate"
4115
+ },
4116
+ "currency": {
4117
+ "type": "string",
4118
+ "minLength": 1,
4119
+ "maxLength": 2000,
4120
+ "description": "Expression string to evaluate"
4121
+ }
4122
+ },
4123
+ "required": [
4124
+ "amount",
4125
+ "currency"
4126
+ ],
4127
+ "additionalProperties": false,
4128
+ "description": "Money object with amount and currency expressions"
4129
+ }
4130
+ },
4131
+ "required": [
4132
+ "type",
4133
+ "value"
4134
+ ],
4135
+ "additionalProperties": false
4136
+ },
4137
+ {
4138
+ "type": "object",
4139
+ "properties": {
4140
+ "label": {
4141
+ "type": "string",
4142
+ "minLength": 1,
4143
+ "maxLength": 200,
4144
+ "description": "Display label for the computed value"
4145
+ },
4146
+ "description": {
4147
+ "type": "string",
4148
+ "minLength": 1,
4149
+ "maxLength": 1000,
4150
+ "description": "Description or documentation of the computed value"
4151
+ },
4152
+ "type": {
4153
+ "type": "string",
4154
+ "const": "address"
4155
+ },
4156
+ "value": {
4157
+ "type": "object",
4158
+ "properties": {
4159
+ "line1": {
4160
+ "type": "string",
4161
+ "minLength": 1,
4162
+ "maxLength": 2000,
4163
+ "description": "Expression string to evaluate"
4164
+ },
4165
+ "line2": {
4166
+ "type": "string",
4167
+ "minLength": 1,
4168
+ "maxLength": 2000,
4169
+ "description": "Expression string to evaluate"
4170
+ },
4171
+ "locality": {
4172
+ "type": "string",
4173
+ "minLength": 1,
4174
+ "maxLength": 2000,
4175
+ "description": "Expression string to evaluate"
4176
+ },
4177
+ "region": {
4178
+ "type": "string",
4179
+ "minLength": 1,
4180
+ "maxLength": 2000,
4181
+ "description": "Expression string to evaluate"
4182
+ },
4183
+ "postalCode": {
4184
+ "type": "string",
4185
+ "minLength": 1,
4186
+ "maxLength": 2000,
4187
+ "description": "Expression string to evaluate"
4188
+ },
4189
+ "country": {
4190
+ "type": "string",
4191
+ "minLength": 1,
4192
+ "maxLength": 2000,
4193
+ "description": "Expression string to evaluate"
4194
+ }
4195
+ },
4196
+ "required": [
4197
+ "line1",
4198
+ "locality",
4199
+ "region",
4200
+ "postalCode",
4201
+ "country"
4202
+ ],
4203
+ "additionalProperties": false,
4204
+ "description": "Address object with component expressions"
4205
+ }
4206
+ },
4207
+ "required": [
4208
+ "type",
4209
+ "value"
4210
+ ],
4211
+ "additionalProperties": false
4212
+ },
4213
+ {
4214
+ "type": "object",
4215
+ "properties": {
4216
+ "label": {
4217
+ "type": "string",
4218
+ "minLength": 1,
4219
+ "maxLength": 200,
4220
+ "description": "Display label for the computed value"
4221
+ },
4222
+ "description": {
4223
+ "type": "string",
4224
+ "minLength": 1,
4225
+ "maxLength": 1000,
4226
+ "description": "Description or documentation of the computed value"
4227
+ },
4228
+ "type": {
4229
+ "type": "string",
4230
+ "const": "phone"
4231
+ },
4232
+ "value": {
4233
+ "type": "object",
4234
+ "properties": {
4235
+ "number": {
4236
+ "type": "string",
4237
+ "minLength": 1,
4238
+ "maxLength": 2000,
4239
+ "description": "Expression string to evaluate"
4240
+ },
4241
+ "type": {
4242
+ "type": "string",
4243
+ "minLength": 1,
4244
+ "maxLength": 2000,
4245
+ "description": "Expression string to evaluate"
4246
+ },
4247
+ "extension": {
4248
+ "type": "string",
4249
+ "minLength": 1,
4250
+ "maxLength": 2000,
4251
+ "description": "Expression string to evaluate"
4252
+ }
4253
+ },
4254
+ "required": [
4255
+ "number"
4256
+ ],
4257
+ "additionalProperties": false,
4258
+ "description": "Phone object with number and optional type/extension expressions"
4259
+ }
4260
+ },
4261
+ "required": [
4262
+ "type",
4263
+ "value"
4264
+ ],
4265
+ "additionalProperties": false
4266
+ },
4267
+ {
4268
+ "type": "object",
4269
+ "properties": {
4270
+ "label": {
4271
+ "type": "string",
4272
+ "minLength": 1,
4273
+ "maxLength": 200,
4274
+ "description": "Display label for the computed value"
4275
+ },
4276
+ "description": {
4277
+ "type": "string",
4278
+ "minLength": 1,
4279
+ "maxLength": 1000,
4280
+ "description": "Description or documentation of the computed value"
4281
+ },
4282
+ "type": {
4283
+ "type": "string",
4284
+ "const": "coordinate"
4285
+ },
4286
+ "value": {
4287
+ "type": "object",
4288
+ "properties": {
4289
+ "lat": {
4290
+ "type": "string",
4291
+ "minLength": 1,
4292
+ "maxLength": 2000,
4293
+ "description": "Expression string to evaluate"
4294
+ },
4295
+ "lon": {
4296
+ "type": "string",
4297
+ "minLength": 1,
4298
+ "maxLength": 2000,
4299
+ "description": "Expression string to evaluate"
4300
+ }
4301
+ },
4302
+ "required": [
4303
+ "lat",
4304
+ "lon"
4305
+ ],
4306
+ "additionalProperties": false,
4307
+ "description": "Coordinate object with latitude and longitude expressions"
4308
+ }
4309
+ },
4310
+ "required": [
4311
+ "type",
4312
+ "value"
4313
+ ],
4314
+ "additionalProperties": false
4315
+ },
4316
+ {
4317
+ "type": "object",
4318
+ "properties": {
4319
+ "label": {
4320
+ "type": "string",
4321
+ "minLength": 1,
4322
+ "maxLength": 200,
4323
+ "description": "Display label for the computed value"
4324
+ },
4325
+ "description": {
4326
+ "type": "string",
4327
+ "minLength": 1,
4328
+ "maxLength": 1000,
4329
+ "description": "Description or documentation of the computed value"
4330
+ },
4331
+ "type": {
4332
+ "type": "string",
4333
+ "const": "bbox"
4334
+ },
4335
+ "value": {
4336
+ "type": "object",
4337
+ "properties": {
4338
+ "southWest": {
4339
+ "type": "object",
4340
+ "properties": {
4341
+ "lat": {
4342
+ "type": "string",
4343
+ "minLength": 1,
4344
+ "maxLength": 2000,
4345
+ "description": "Expression string to evaluate"
4346
+ },
4347
+ "lon": {
4348
+ "type": "string",
4349
+ "minLength": 1,
4350
+ "maxLength": 2000,
4351
+ "description": "Expression string to evaluate"
4352
+ }
4353
+ },
4354
+ "required": [
4355
+ "lat",
4356
+ "lon"
4357
+ ],
4358
+ "additionalProperties": false,
4359
+ "description": "Southwest (minimum) corner expressions"
4360
+ },
4361
+ "northEast": {
4362
+ "type": "object",
4363
+ "properties": {
4364
+ "lat": {
4365
+ "type": "string",
4366
+ "minLength": 1,
4367
+ "maxLength": 2000,
4368
+ "description": "Expression string to evaluate"
4369
+ },
4370
+ "lon": {
4371
+ "type": "string",
4372
+ "minLength": 1,
4373
+ "maxLength": 2000,
4374
+ "description": "Expression string to evaluate"
4375
+ }
4376
+ },
4377
+ "required": [
4378
+ "lat",
4379
+ "lon"
4380
+ ],
4381
+ "additionalProperties": false,
4382
+ "description": "Northeast (maximum) corner expressions"
4383
+ }
4384
+ },
4385
+ "required": [
4386
+ "southWest",
4387
+ "northEast"
4388
+ ],
4389
+ "additionalProperties": false,
4390
+ "description": "Bounding box with southwest and northeast corner expressions"
4391
+ }
4392
+ },
4393
+ "required": [
4394
+ "type",
4395
+ "value"
4396
+ ],
4397
+ "additionalProperties": false
4398
+ },
4399
+ {
4400
+ "type": "object",
4401
+ "properties": {
4402
+ "label": {
4403
+ "type": "string",
4404
+ "minLength": 1,
4405
+ "maxLength": 200,
4406
+ "description": "Display label for the computed value"
4407
+ },
4408
+ "description": {
4409
+ "type": "string",
4410
+ "minLength": 1,
4411
+ "maxLength": 1000,
4412
+ "description": "Description or documentation of the computed value"
4413
+ },
4414
+ "type": {
4415
+ "type": "string",
4416
+ "const": "person"
4417
+ },
4418
+ "value": {
4419
+ "type": "object",
4420
+ "properties": {
4421
+ "name": {
4422
+ "type": "string",
4423
+ "minLength": 1,
4424
+ "maxLength": 2000,
4425
+ "description": "Expression string to evaluate"
4426
+ },
4427
+ "title": {
4428
+ "type": "string",
4429
+ "minLength": 1,
4430
+ "maxLength": 2000,
4431
+ "description": "Expression string to evaluate"
4432
+ },
4433
+ "firstName": {
4434
+ "type": "string",
4435
+ "minLength": 1,
4436
+ "maxLength": 2000,
4437
+ "description": "Expression string to evaluate"
4438
+ },
4439
+ "middleName": {
4440
+ "type": "string",
4441
+ "minLength": 1,
4442
+ "maxLength": 2000,
4443
+ "description": "Expression string to evaluate"
4444
+ },
4445
+ "lastName": {
4446
+ "type": "string",
4447
+ "minLength": 1,
4448
+ "maxLength": 2000,
4449
+ "description": "Expression string to evaluate"
4450
+ },
4451
+ "suffix": {
4452
+ "type": "string",
4453
+ "minLength": 1,
4454
+ "maxLength": 2000,
4455
+ "description": "Expression string to evaluate"
4456
+ }
4457
+ },
4458
+ "required": [
4459
+ "name"
4460
+ ],
4461
+ "additionalProperties": false,
4462
+ "description": "Person object with name component expressions"
4463
+ }
4464
+ },
4465
+ "required": [
4466
+ "type",
4467
+ "value"
4468
+ ],
4469
+ "additionalProperties": false
4470
+ },
4471
+ {
4472
+ "type": "object",
4473
+ "properties": {
4474
+ "label": {
4475
+ "type": "string",
4476
+ "minLength": 1,
4477
+ "maxLength": 200,
4478
+ "description": "Display label for the computed value"
4479
+ },
4480
+ "description": {
4481
+ "type": "string",
4482
+ "minLength": 1,
4483
+ "maxLength": 1000,
4484
+ "description": "Description or documentation of the computed value"
4485
+ },
4486
+ "type": {
4487
+ "type": "string",
4488
+ "const": "organization"
4489
+ },
4490
+ "value": {
4491
+ "type": "object",
4492
+ "properties": {
4493
+ "name": {
4494
+ "type": "string",
4495
+ "minLength": 1,
4496
+ "maxLength": 2000,
4497
+ "description": "Expression string to evaluate"
4498
+ },
4499
+ "legalName": {
4500
+ "type": "string",
4501
+ "minLength": 1,
4502
+ "maxLength": 2000,
4503
+ "description": "Expression string to evaluate"
4504
+ },
4505
+ "domicile": {
4506
+ "type": "string",
4507
+ "minLength": 1,
4508
+ "maxLength": 2000,
4509
+ "description": "Expression string to evaluate"
4510
+ },
4511
+ "entityType": {
4512
+ "type": "string",
4513
+ "minLength": 1,
4514
+ "maxLength": 2000,
4515
+ "description": "Expression string to evaluate"
4516
+ },
4517
+ "entityId": {
4518
+ "type": "string",
4519
+ "minLength": 1,
4520
+ "maxLength": 2000,
4521
+ "description": "Expression string to evaluate"
4522
+ },
4523
+ "taxId": {
4524
+ "type": "string",
4525
+ "minLength": 1,
4526
+ "maxLength": 2000,
4527
+ "description": "Expression string to evaluate"
4528
+ }
4529
+ },
4530
+ "required": [
4531
+ "name"
4532
+ ],
4533
+ "additionalProperties": false,
4534
+ "description": "Organization object with component expressions"
4535
+ }
4536
+ },
4537
+ "required": [
4538
+ "type",
4539
+ "value"
4540
+ ],
4541
+ "additionalProperties": false
4542
+ },
4543
+ {
4544
+ "type": "object",
4545
+ "properties": {
4546
+ "label": {
4547
+ "type": "string",
4548
+ "minLength": 1,
4549
+ "maxLength": 200,
4550
+ "description": "Display label for the computed value"
4551
+ },
4552
+ "description": {
4553
+ "type": "string",
4554
+ "minLength": 1,
4555
+ "maxLength": 1000,
4556
+ "description": "Description or documentation of the computed value"
4557
+ },
4558
+ "type": {
4559
+ "type": "string",
4560
+ "const": "identification"
4561
+ },
4562
+ "value": {
4563
+ "type": "object",
4564
+ "properties": {
4565
+ "type": {
4566
+ "type": "string",
4567
+ "minLength": 1,
4568
+ "maxLength": 2000,
4569
+ "description": "Expression string to evaluate"
4570
+ },
4571
+ "number": {
4572
+ "type": "string",
4573
+ "minLength": 1,
4574
+ "maxLength": 2000,
4575
+ "description": "Expression string to evaluate"
4576
+ },
4577
+ "issuer": {
4578
+ "type": "string",
4579
+ "minLength": 1,
4580
+ "maxLength": 2000,
4581
+ "description": "Expression string to evaluate"
4582
+ },
4583
+ "issueDate": {
4584
+ "type": "string",
4585
+ "minLength": 1,
4586
+ "maxLength": 2000,
4587
+ "description": "Expression string to evaluate"
4588
+ },
4589
+ "expiryDate": {
4590
+ "type": "string",
4591
+ "minLength": 1,
4592
+ "maxLength": 2000,
4593
+ "description": "Expression string to evaluate"
4594
+ }
4595
+ },
4596
+ "required": [
4597
+ "type",
4598
+ "number"
4599
+ ],
4600
+ "additionalProperties": false,
4601
+ "description": "Identification object with type, number, and optional issuer/date expressions"
4602
+ }
4603
+ },
4604
+ "required": [
4605
+ "type",
4606
+ "value"
4607
+ ],
4608
+ "additionalProperties": false
4609
+ }
4610
+ ],
4611
+ "title": "Expression",
4612
+ "description": "A typed computed value with optional metadata (label, description). The type property determines the expected result type and value schema."
4613
+ },
4614
+ "title": "DefsSection",
4615
+ "description": "Named computed values with type information that can be referenced in conditional expressions"
4616
+ },
4617
+ "Asterdoc": {
4618
+ "anyOf": [
4619
+ {
4620
+ "$ref": "#/$defs/Form"
4621
+ },
4622
+ {
4623
+ "$ref": "#/$defs/Document"
4624
+ },
4625
+ {
4626
+ "$ref": "#/$defs/Checklist"
4627
+ },
4628
+ {
4629
+ "$ref": "#/$defs/Bundle"
4630
+ }
4631
+ ],
4632
+ "title": "Asterdoc",
4633
+ "description": "Root schema for any Asterdoc artifact document"
4634
+ }
4635
+ }
4636
+ }