mailschema 0.2.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.
@@ -0,0 +1,874 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MailSchema contribution format",
4
+ "description": "Repository contribution data. This is not a MAP message or wire representation.",
5
+ "$defs": {
6
+ "definition": {
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "slug": {
11
+ "type": "string",
12
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
13
+ "maxLength": 100
14
+ },
15
+ "name": {
16
+ "type": "string",
17
+ "minLength": 1,
18
+ "maxLength": 240,
19
+ "pattern": "\\S"
20
+ },
21
+ "summary": {
22
+ "type": "string",
23
+ "minLength": 1,
24
+ "maxLength": 500,
25
+ "pattern": "\\S"
26
+ },
27
+ "category": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "maxLength": 240,
31
+ "pattern": "\\S"
32
+ },
33
+ "status": {
34
+ "enum": ["Draft", "Proposal", "Reuse assessment"]
35
+ },
36
+ "version": {
37
+ "anyOf": [
38
+ {
39
+ "type": "string",
40
+ "pattern": "^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?(?:-[a-zA-Z0-9.-]+)?$",
41
+ "maxLength": 80
42
+ },
43
+ {
44
+ "type": "null"
45
+ }
46
+ ]
47
+ },
48
+ "profile": {
49
+ "type": "string",
50
+ "minLength": 1,
51
+ "maxLength": 240,
52
+ "pattern": "\\S"
53
+ },
54
+ "overview": {
55
+ "type": "string",
56
+ "minLength": 1,
57
+ "maxLength": 12000,
58
+ "pattern": "\\S"
59
+ },
60
+ "target": {
61
+ "type": "string",
62
+ "minLength": 1,
63
+ "maxLength": 12000,
64
+ "pattern": "\\S"
65
+ },
66
+ "operations": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "object",
70
+ "additionalProperties": false,
71
+ "properties": {
72
+ "id": {
73
+ "type": "string",
74
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
75
+ "maxLength": 100
76
+ },
77
+ "name": {
78
+ "type": "string",
79
+ "minLength": 1,
80
+ "maxLength": 240,
81
+ "pattern": "\\S"
82
+ },
83
+ "description": {
84
+ "type": "string",
85
+ "minLength": 1,
86
+ "maxLength": 12000,
87
+ "pattern": "\\S"
88
+ }
89
+ },
90
+ "required": ["id", "name", "description"]
91
+ },
92
+ "minItems": 1,
93
+ "maxItems": 100
94
+ },
95
+ "inputs": {
96
+ "type": "string",
97
+ "minLength": 1,
98
+ "maxLength": 12000,
99
+ "pattern": "\\S"
100
+ },
101
+ "results": {
102
+ "type": "string",
103
+ "minLength": 1,
104
+ "maxLength": 12000,
105
+ "pattern": "\\S"
106
+ },
107
+ "permissions": {
108
+ "type": "string",
109
+ "minLength": 1,
110
+ "maxLength": 12000,
111
+ "pattern": "\\S"
112
+ },
113
+ "humanRoute": {
114
+ "type": "string",
115
+ "minLength": 1,
116
+ "maxLength": 12000,
117
+ "pattern": "\\S"
118
+ },
119
+ "example": {
120
+ "type": "object",
121
+ "additionalProperties": false,
122
+ "properties": {
123
+ "title": {
124
+ "type": "string",
125
+ "minLength": 1,
126
+ "maxLength": 240,
127
+ "pattern": "\\S"
128
+ },
129
+ "steps": {
130
+ "type": "array",
131
+ "items": {
132
+ "type": "string",
133
+ "minLength": 1,
134
+ "maxLength": 12000,
135
+ "pattern": "\\S"
136
+ },
137
+ "minItems": 1,
138
+ "maxItems": 100
139
+ },
140
+ "exception": {
141
+ "type": "string",
142
+ "minLength": 1,
143
+ "maxLength": 12000,
144
+ "pattern": "\\S"
145
+ }
146
+ },
147
+ "required": ["title", "steps", "exception"]
148
+ },
149
+ "references": {
150
+ "type": "array",
151
+ "items": {
152
+ "type": "object",
153
+ "additionalProperties": false,
154
+ "properties": {
155
+ "title": {
156
+ "type": "string",
157
+ "minLength": 1,
158
+ "maxLength": 240,
159
+ "pattern": "\\S"
160
+ },
161
+ "href": {
162
+ "type": "string",
163
+ "format": "uri",
164
+ "pattern": "^https://",
165
+ "maxLength": 2048
166
+ },
167
+ "description": {
168
+ "type": "string",
169
+ "minLength": 1,
170
+ "maxLength": 12000,
171
+ "pattern": "\\S"
172
+ }
173
+ },
174
+ "required": ["title", "href", "description"]
175
+ },
176
+ "minItems": 1,
177
+ "maxItems": 100
178
+ },
179
+ "openQuestions": {
180
+ "type": "array",
181
+ "items": {
182
+ "type": "string",
183
+ "minLength": 1,
184
+ "maxLength": 12000,
185
+ "pattern": "\\S"
186
+ },
187
+ "minItems": 0,
188
+ "maxItems": 100
189
+ },
190
+ "maintainers": {
191
+ "type": "array",
192
+ "items": {
193
+ "type": "object",
194
+ "additionalProperties": false,
195
+ "properties": {
196
+ "id": {
197
+ "type": "string",
198
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
199
+ "maxLength": 100
200
+ },
201
+ "name": {
202
+ "type": "string",
203
+ "minLength": 1,
204
+ "maxLength": 240,
205
+ "pattern": "\\S"
206
+ },
207
+ "url": {
208
+ "type": "string",
209
+ "format": "uri",
210
+ "pattern": "^https://",
211
+ "maxLength": 2048
212
+ }
213
+ },
214
+ "required": ["name"]
215
+ },
216
+ "minItems": 1,
217
+ "maxItems": 100
218
+ },
219
+ "definition": {
220
+ "type": "object",
221
+ "additionalProperties": false,
222
+ "properties": {
223
+ "label": {
224
+ "type": "string",
225
+ "minLength": 1,
226
+ "maxLength": 240,
227
+ "pattern": "\\S"
228
+ },
229
+ "href": {
230
+ "type": "string",
231
+ "pattern": "^/specification/(?:[a-z0-9-]+/)*$",
232
+ "maxLength": 300
233
+ }
234
+ },
235
+ "required": ["label", "href"]
236
+ }
237
+ },
238
+ "required": [
239
+ "slug",
240
+ "name",
241
+ "summary",
242
+ "category",
243
+ "status",
244
+ "version",
245
+ "profile",
246
+ "overview",
247
+ "target",
248
+ "operations",
249
+ "inputs",
250
+ "results",
251
+ "permissions",
252
+ "humanRoute",
253
+ "example",
254
+ "references",
255
+ "openQuestions",
256
+ "maintainers"
257
+ ],
258
+ "allOf": [
259
+ {
260
+ "if": {
261
+ "properties": {
262
+ "status": {
263
+ "const": "Draft"
264
+ }
265
+ },
266
+ "required": ["status"]
267
+ },
268
+ "then": {
269
+ "required": ["definition"],
270
+ "properties": {
271
+ "version": {
272
+ "type": "string"
273
+ }
274
+ }
275
+ }
276
+ }
277
+ ]
278
+ },
279
+ "record": {
280
+ "type": "object",
281
+ "additionalProperties": false,
282
+ "properties": {
283
+ "slug": {
284
+ "type": "string",
285
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
286
+ "maxLength": 100
287
+ },
288
+ "name": {
289
+ "type": "string",
290
+ "minLength": 1,
291
+ "maxLength": 240,
292
+ "pattern": "\\S"
293
+ },
294
+ "summary": {
295
+ "type": "string",
296
+ "minLength": 1,
297
+ "maxLength": 500,
298
+ "pattern": "\\S"
299
+ },
300
+ "category": {
301
+ "type": "string",
302
+ "minLength": 1,
303
+ "maxLength": 240,
304
+ "pattern": "\\S"
305
+ },
306
+ "status": {
307
+ "enum": ["Draft", "Proposal", "Reuse assessment"]
308
+ },
309
+ "version": {
310
+ "anyOf": [
311
+ {
312
+ "type": "string",
313
+ "pattern": "^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?(?:-[a-zA-Z0-9.-]+)?$",
314
+ "maxLength": 80
315
+ },
316
+ {
317
+ "type": "null"
318
+ }
319
+ ]
320
+ },
321
+ "profile": {
322
+ "type": "string",
323
+ "minLength": 1,
324
+ "maxLength": 240,
325
+ "pattern": "\\S"
326
+ },
327
+ "overview": {
328
+ "type": "string",
329
+ "minLength": 1,
330
+ "maxLength": 12000,
331
+ "pattern": "\\S"
332
+ },
333
+ "target": {
334
+ "type": "string",
335
+ "minLength": 1,
336
+ "maxLength": 12000,
337
+ "pattern": "\\S"
338
+ },
339
+ "operations": {
340
+ "type": "array",
341
+ "items": {
342
+ "type": "object",
343
+ "additionalProperties": false,
344
+ "properties": {
345
+ "id": {
346
+ "type": "string",
347
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
348
+ "maxLength": 100
349
+ },
350
+ "name": {
351
+ "type": "string",
352
+ "minLength": 1,
353
+ "maxLength": 240,
354
+ "pattern": "\\S"
355
+ },
356
+ "description": {
357
+ "type": "string",
358
+ "minLength": 1,
359
+ "maxLength": 12000,
360
+ "pattern": "\\S"
361
+ }
362
+ },
363
+ "required": ["id", "name", "description"]
364
+ },
365
+ "minItems": 1,
366
+ "maxItems": 100
367
+ },
368
+ "inputs": {
369
+ "type": "string",
370
+ "minLength": 1,
371
+ "maxLength": 12000,
372
+ "pattern": "\\S"
373
+ },
374
+ "results": {
375
+ "type": "string",
376
+ "minLength": 1,
377
+ "maxLength": 12000,
378
+ "pattern": "\\S"
379
+ },
380
+ "permissions": {
381
+ "type": "string",
382
+ "minLength": 1,
383
+ "maxLength": 12000,
384
+ "pattern": "\\S"
385
+ },
386
+ "humanRoute": {
387
+ "type": "string",
388
+ "minLength": 1,
389
+ "maxLength": 12000,
390
+ "pattern": "\\S"
391
+ },
392
+ "example": {
393
+ "type": "object",
394
+ "additionalProperties": false,
395
+ "properties": {
396
+ "title": {
397
+ "type": "string",
398
+ "minLength": 1,
399
+ "maxLength": 240,
400
+ "pattern": "\\S"
401
+ },
402
+ "steps": {
403
+ "type": "array",
404
+ "items": {
405
+ "type": "string",
406
+ "minLength": 1,
407
+ "maxLength": 12000,
408
+ "pattern": "\\S"
409
+ },
410
+ "minItems": 1,
411
+ "maxItems": 100
412
+ },
413
+ "exception": {
414
+ "type": "string",
415
+ "minLength": 1,
416
+ "maxLength": 12000,
417
+ "pattern": "\\S"
418
+ }
419
+ },
420
+ "required": ["title", "steps", "exception"]
421
+ },
422
+ "references": {
423
+ "type": "array",
424
+ "items": {
425
+ "type": "object",
426
+ "additionalProperties": false,
427
+ "properties": {
428
+ "title": {
429
+ "type": "string",
430
+ "minLength": 1,
431
+ "maxLength": 240,
432
+ "pattern": "\\S"
433
+ },
434
+ "href": {
435
+ "type": "string",
436
+ "format": "uri",
437
+ "pattern": "^https://",
438
+ "maxLength": 2048
439
+ },
440
+ "description": {
441
+ "type": "string",
442
+ "minLength": 1,
443
+ "maxLength": 12000,
444
+ "pattern": "\\S"
445
+ }
446
+ },
447
+ "required": ["title", "href", "description"]
448
+ },
449
+ "minItems": 1,
450
+ "maxItems": 100
451
+ },
452
+ "openQuestions": {
453
+ "type": "array",
454
+ "items": {
455
+ "type": "string",
456
+ "minLength": 1,
457
+ "maxLength": 12000,
458
+ "pattern": "\\S"
459
+ },
460
+ "minItems": 0,
461
+ "maxItems": 100
462
+ },
463
+ "maintainers": {
464
+ "type": "array",
465
+ "items": {
466
+ "type": "object",
467
+ "additionalProperties": false,
468
+ "properties": {
469
+ "name": {
470
+ "type": "string",
471
+ "minLength": 1,
472
+ "maxLength": 240,
473
+ "pattern": "\\S"
474
+ },
475
+ "url": {
476
+ "type": "string",
477
+ "format": "uri",
478
+ "pattern": "^https://",
479
+ "maxLength": 2048
480
+ }
481
+ },
482
+ "required": ["name"]
483
+ },
484
+ "minItems": 1,
485
+ "maxItems": 100
486
+ },
487
+ "definition": {
488
+ "type": "object",
489
+ "additionalProperties": false,
490
+ "properties": {
491
+ "label": {
492
+ "type": "string",
493
+ "minLength": 1,
494
+ "maxLength": 240,
495
+ "pattern": "\\S"
496
+ },
497
+ "href": {
498
+ "type": "string",
499
+ "pattern": "^/specification/(?:[a-z0-9-]+/)*$",
500
+ "maxLength": 300
501
+ }
502
+ },
503
+ "required": ["label", "href"]
504
+ },
505
+ "origin": {
506
+ "type": "string",
507
+ "minLength": 1,
508
+ "maxLength": 240,
509
+ "pattern": "\\S"
510
+ },
511
+ "contributors": {
512
+ "type": "array",
513
+ "items": {
514
+ "type": "object",
515
+ "additionalProperties": false,
516
+ "properties": {
517
+ "name": {
518
+ "type": "string",
519
+ "minLength": 1,
520
+ "maxLength": 240,
521
+ "pattern": "\\S"
522
+ },
523
+ "url": {
524
+ "type": "string",
525
+ "format": "uri",
526
+ "pattern": "^https://",
527
+ "maxLength": 2048
528
+ }
529
+ },
530
+ "required": ["name"]
531
+ },
532
+ "minItems": 1,
533
+ "maxItems": 100
534
+ },
535
+ "history": {
536
+ "type": "array",
537
+ "items": {
538
+ "type": "object",
539
+ "additionalProperties": false,
540
+ "properties": {
541
+ "label": {
542
+ "type": "string",
543
+ "minLength": 1,
544
+ "maxLength": 240,
545
+ "pattern": "\\S"
546
+ },
547
+ "description": {
548
+ "type": "string",
549
+ "minLength": 1,
550
+ "maxLength": 12000,
551
+ "pattern": "\\S"
552
+ },
553
+ "contributionId": {
554
+ "type": "string",
555
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
556
+ "maxLength": 100
557
+ }
558
+ },
559
+ "required": ["label", "description"]
560
+ },
561
+ "minItems": 1,
562
+ "maxItems": 100
563
+ }
564
+ },
565
+ "required": [
566
+ "slug",
567
+ "name",
568
+ "summary",
569
+ "category",
570
+ "status",
571
+ "version",
572
+ "profile",
573
+ "overview",
574
+ "target",
575
+ "operations",
576
+ "inputs",
577
+ "results",
578
+ "permissions",
579
+ "humanRoute",
580
+ "example",
581
+ "references",
582
+ "openQuestions",
583
+ "maintainers",
584
+ "origin",
585
+ "contributors",
586
+ "history"
587
+ ],
588
+ "allOf": [
589
+ {
590
+ "if": {
591
+ "properties": {
592
+ "status": {
593
+ "const": "Draft"
594
+ }
595
+ },
596
+ "required": ["status"]
597
+ },
598
+ "then": {
599
+ "required": ["definition"],
600
+ "properties": {
601
+ "version": {
602
+ "type": "string"
603
+ }
604
+ }
605
+ }
606
+ }
607
+ ]
608
+ }
609
+ },
610
+ "oneOf": [
611
+ {
612
+ "type": "object",
613
+ "additionalProperties": false,
614
+ "properties": {
615
+ "format": {
616
+ "const": "mailschema-contribution/1"
617
+ },
618
+ "id": {
619
+ "type": "string",
620
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
621
+ "maxLength": 100
622
+ },
623
+ "contributor": {
624
+ "type": "object",
625
+ "additionalProperties": false,
626
+ "properties": {
627
+ "name": {
628
+ "type": "string",
629
+ "minLength": 1,
630
+ "maxLength": 240,
631
+ "pattern": "\\S"
632
+ },
633
+ "url": {
634
+ "type": "string",
635
+ "format": "uri",
636
+ "pattern": "^https://",
637
+ "maxLength": 2048
638
+ }
639
+ },
640
+ "required": ["name"]
641
+ },
642
+ "source": {
643
+ "type": "string",
644
+ "format": "uri",
645
+ "pattern": "^https://",
646
+ "maxLength": 2048
647
+ },
648
+ "summary": {
649
+ "type": "string",
650
+ "minLength": 1,
651
+ "maxLength": 12000,
652
+ "pattern": "\\S"
653
+ },
654
+ "kind": {
655
+ "const": "new-type"
656
+ },
657
+ "record": {
658
+ "$ref": "#/$defs/definition"
659
+ }
660
+ },
661
+ "required": ["format", "id", "contributor", "summary", "kind", "record"]
662
+ },
663
+ {
664
+ "type": "object",
665
+ "additionalProperties": false,
666
+ "properties": {
667
+ "format": {
668
+ "const": "mailschema-contribution/1"
669
+ },
670
+ "id": {
671
+ "type": "string",
672
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
673
+ "maxLength": 100
674
+ },
675
+ "contributor": {
676
+ "type": "object",
677
+ "additionalProperties": false,
678
+ "properties": {
679
+ "name": {
680
+ "type": "string",
681
+ "minLength": 1,
682
+ "maxLength": 240,
683
+ "pattern": "\\S"
684
+ },
685
+ "url": {
686
+ "type": "string",
687
+ "format": "uri",
688
+ "pattern": "^https://",
689
+ "maxLength": 2048
690
+ }
691
+ },
692
+ "required": ["name"]
693
+ },
694
+ "source": {
695
+ "type": "string",
696
+ "format": "uri",
697
+ "pattern": "^https://",
698
+ "maxLength": 2048
699
+ },
700
+ "summary": {
701
+ "type": "string",
702
+ "minLength": 1,
703
+ "maxLength": 12000,
704
+ "pattern": "\\S"
705
+ },
706
+ "kind": {
707
+ "const": "amendment"
708
+ },
709
+ "baseDigest": {
710
+ "type": "string",
711
+ "pattern": "^[a-f0-9]{64}$"
712
+ },
713
+ "record": {
714
+ "$ref": "#/$defs/definition"
715
+ }
716
+ },
717
+ "required": ["format", "id", "contributor", "summary", "kind", "baseDigest", "record"]
718
+ },
719
+ {
720
+ "type": "object",
721
+ "additionalProperties": false,
722
+ "properties": {
723
+ "format": {
724
+ "const": "mailschema-contribution/1"
725
+ },
726
+ "id": {
727
+ "type": "string",
728
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
729
+ "maxLength": 100
730
+ },
731
+ "contributor": {
732
+ "type": "object",
733
+ "additionalProperties": false,
734
+ "properties": {
735
+ "name": {
736
+ "type": "string",
737
+ "minLength": 1,
738
+ "maxLength": 240,
739
+ "pattern": "\\S"
740
+ },
741
+ "url": {
742
+ "type": "string",
743
+ "format": "uri",
744
+ "pattern": "^https://",
745
+ "maxLength": 2048
746
+ }
747
+ },
748
+ "required": ["name"]
749
+ },
750
+ "source": {
751
+ "type": "string",
752
+ "format": "uri",
753
+ "pattern": "^https://",
754
+ "maxLength": 2048
755
+ },
756
+ "summary": {
757
+ "type": "string",
758
+ "minLength": 1,
759
+ "maxLength": 12000,
760
+ "pattern": "\\S"
761
+ },
762
+ "kind": {
763
+ "const": "implementation"
764
+ },
765
+ "type": {
766
+ "type": "string",
767
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
768
+ "maxLength": 100
769
+ },
770
+ "typeVersion": {
771
+ "type": "string",
772
+ "pattern": "^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?(?:-[a-zA-Z0-9.-]+)?$",
773
+ "maxLength": 80
774
+ },
775
+ "typeDigest": {
776
+ "type": "string",
777
+ "pattern": "^[a-f0-9]{64}$"
778
+ },
779
+ "profile": {
780
+ "type": "string",
781
+ "minLength": 1,
782
+ "maxLength": 240,
783
+ "pattern": "\\S"
784
+ },
785
+ "product": {
786
+ "type": "object",
787
+ "additionalProperties": false,
788
+ "properties": {
789
+ "name": {
790
+ "type": "string",
791
+ "minLength": 1,
792
+ "maxLength": 240,
793
+ "pattern": "\\S"
794
+ },
795
+ "url": {
796
+ "type": "string",
797
+ "format": "uri",
798
+ "pattern": "^https://",
799
+ "maxLength": 2048
800
+ }
801
+ },
802
+ "required": ["name"]
803
+ },
804
+ "operations": {
805
+ "type": "array",
806
+ "items": {
807
+ "type": "string",
808
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
809
+ "maxLength": 100
810
+ },
811
+ "minItems": 1,
812
+ "maxItems": 100
813
+ },
814
+ "evidence": {
815
+ "type": "object",
816
+ "additionalProperties": false,
817
+ "properties": {
818
+ "kind": {
819
+ "enum": ["declaration", "test-report"]
820
+ },
821
+ "url": {
822
+ "type": "string",
823
+ "format": "uri",
824
+ "pattern": "^https://",
825
+ "maxLength": 2048
826
+ },
827
+ "reproduction": {
828
+ "type": "string",
829
+ "minLength": 1,
830
+ "maxLength": 12000,
831
+ "pattern": "\\S"
832
+ },
833
+ "results": {
834
+ "type": "string",
835
+ "minLength": 1,
836
+ "maxLength": 12000,
837
+ "pattern": "\\S"
838
+ }
839
+ },
840
+ "required": ["kind"],
841
+ "allOf": [
842
+ {
843
+ "if": {
844
+ "properties": {
845
+ "kind": {
846
+ "const": "test-report"
847
+ }
848
+ },
849
+ "required": ["kind"]
850
+ },
851
+ "then": {
852
+ "required": ["url", "reproduction", "results"]
853
+ }
854
+ }
855
+ ]
856
+ }
857
+ },
858
+ "required": [
859
+ "format",
860
+ "id",
861
+ "contributor",
862
+ "summary",
863
+ "kind",
864
+ "type",
865
+ "typeVersion",
866
+ "typeDigest",
867
+ "profile",
868
+ "product",
869
+ "operations",
870
+ "evidence"
871
+ ]
872
+ }
873
+ ]
874
+ }