@eudiplo/cli 9.1.0-main.db0db97 → 9.1.0-main.e46f47c

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.
@@ -9,7 +9,7 @@
9
9
  "properties": {
10
10
  "$schema": {
11
11
  "type": "string",
12
- "const": "https://eudiplo.dev/schemas/v1/CredentialConfigFile.schema.json"
12
+ "const": "https://eudiplo.dev/schemas/v2/CredentialConfigFile.schema.json"
13
13
  },
14
14
  "metadata": {
15
15
  "type": "object",
@@ -55,6 +55,801 @@
55
55
  "spec"
56
56
  ],
57
57
  "additionalProperties": false
58
+ },
59
+ {
60
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
61
+ "$id": "https://eudiplo.dev/schemas/v1/CredentialConfigFile.schema.json",
62
+ "title": "CredentialConfigFile",
63
+ "type": "object",
64
+ "properties": {
65
+ "$schema": {
66
+ "type": "string",
67
+ "const": "https://eudiplo.dev/schemas/v1/CredentialConfigFile.schema.json"
68
+ },
69
+ "metadata": {
70
+ "type": "object",
71
+ "properties": {
72
+ "generation": {
73
+ "type": "integer",
74
+ "minimum": 1,
75
+ "description": "Monotonically increasing configuration generation."
76
+ },
77
+ "ownership": {
78
+ "type": "string",
79
+ "enum": [
80
+ "unmanaged",
81
+ "file-managed"
82
+ ],
83
+ "description": "Requested ownership recorded when the document is applied."
84
+ }
85
+ },
86
+ "additionalProperties": false
87
+ },
88
+ "spec": {
89
+ "allOf": [
90
+ {
91
+ "$ref": "#/$defs/CredentialConfigCreate"
92
+ },
93
+ {
94
+ "type": "object",
95
+ "required": [
96
+ "id"
97
+ ],
98
+ "properties": {
99
+ "id": {
100
+ "type": "string",
101
+ "minLength": 1
102
+ }
103
+ }
104
+ }
105
+ ]
106
+ }
107
+ },
108
+ "required": [
109
+ "$schema",
110
+ "spec"
111
+ ],
112
+ "additionalProperties": false,
113
+ "$defs": {
114
+ "CredentialConfigCreate": {
115
+ "type": "object",
116
+ "properties": {
117
+ "id": {
118
+ "type": "string",
119
+ "minLength": 1,
120
+ "description": "Credential configuration identifier."
121
+ },
122
+ "description": {
123
+ "description": "Optional description for operators and tooling.",
124
+ "type": [
125
+ "string",
126
+ "null"
127
+ ]
128
+ },
129
+ "config": {
130
+ "type": "object",
131
+ "properties": {
132
+ "format": {
133
+ "type": "string",
134
+ "enum": [
135
+ "mso_mdoc",
136
+ "dc+sd-jwt"
137
+ ],
138
+ "description": "Credential format emitted by this configuration."
139
+ },
140
+ "display": {
141
+ "type": "array",
142
+ "items": {
143
+ "type": "object",
144
+ "properties": {
145
+ "locale": {
146
+ "type": "string",
147
+ "minLength": 1,
148
+ "description": "Locale tag for the display entry."
149
+ },
150
+ "name": {
151
+ "type": "string",
152
+ "minLength": 1,
153
+ "description": "Human-readable field name."
154
+ },
155
+ "description": {
156
+ "description": "Optional field description for this locale.",
157
+ "type": "string"
158
+ },
159
+ "background_color": {
160
+ "description": "Optional background color for card-style rendering.",
161
+ "type": "string"
162
+ },
163
+ "text_color": {
164
+ "description": "Optional text color for card-style rendering.",
165
+ "type": "string"
166
+ },
167
+ "background_image": {
168
+ "description": "Optional background image.",
169
+ "type": "object",
170
+ "properties": {
171
+ "uri": {
172
+ "type": "string",
173
+ "minLength": 1,
174
+ "description": "Image URI."
175
+ }
176
+ },
177
+ "required": [
178
+ "uri"
179
+ ],
180
+ "additionalProperties": false
181
+ },
182
+ "logo": {
183
+ "description": "Optional logo image.",
184
+ "type": "object",
185
+ "properties": {
186
+ "uri": {
187
+ "type": "string",
188
+ "minLength": 1,
189
+ "description": "Image URI."
190
+ }
191
+ },
192
+ "required": [
193
+ "uri"
194
+ ],
195
+ "additionalProperties": false
196
+ }
197
+ },
198
+ "required": [
199
+ "locale",
200
+ "name"
201
+ ],
202
+ "additionalProperties": false
203
+ },
204
+ "description": "Display metadata shown by wallets."
205
+ },
206
+ "scope": {
207
+ "description": "Optional OAuth scope associated with this credential type.",
208
+ "type": "string"
209
+ },
210
+ "docType": {
211
+ "description": "Optional mDoc document type.",
212
+ "type": "string"
213
+ },
214
+ "keyAttestationsRequired": {
215
+ "description": "Optional key attestation requirements.",
216
+ "type": "object",
217
+ "properties": {
218
+ "key_storage": {
219
+ "description": "Required key storage attestations.",
220
+ "type": "array",
221
+ "items": {
222
+ "type": "string"
223
+ }
224
+ },
225
+ "user_authentication": {
226
+ "description": "Required user authentication attestations.",
227
+ "type": "array",
228
+ "items": {
229
+ "type": "string"
230
+ }
231
+ }
232
+ },
233
+ "additionalProperties": false
234
+ },
235
+ "proofTypesSupported": {
236
+ "description": "Supported proof types for issuance requests.",
237
+ "type": "array",
238
+ "items": {
239
+ "type": "string",
240
+ "enum": [
241
+ "jwt",
242
+ "attestation"
243
+ ]
244
+ }
245
+ },
246
+ "credentialReusePolicy": {
247
+ "description": "Optional PID/EAA reuse policy published in credential metadata.",
248
+ "type": "object",
249
+ "properties": {
250
+ "id": {
251
+ "type": "string",
252
+ "minLength": 1
253
+ },
254
+ "options": {
255
+ "type": "array",
256
+ "items": {
257
+ "type": "object",
258
+ "properties": {
259
+ "details": {
260
+ "minItems": 1,
261
+ "type": "array",
262
+ "items": {
263
+ "type": "string",
264
+ "enum": [
265
+ "once_only",
266
+ "limited_time",
267
+ "limited-time",
268
+ "rotating-batch",
269
+ "per-relying-party"
270
+ ]
271
+ }
272
+ },
273
+ "batch_size": {
274
+ "type": "integer",
275
+ "minimum": 2,
276
+ "maximum": 9007199254740991
277
+ },
278
+ "reissue_trigger_unused": {
279
+ "type": "integer",
280
+ "minimum": 0,
281
+ "maximum": 9007199254740991
282
+ },
283
+ "reissue_trigger_lifetime_left": {
284
+ "type": "integer",
285
+ "minimum": 0,
286
+ "maximum": 9007199254740991
287
+ }
288
+ },
289
+ "required": [
290
+ "details"
291
+ ],
292
+ "additionalProperties": false
293
+ }
294
+ }
295
+ },
296
+ "required": [
297
+ "id"
298
+ ],
299
+ "additionalProperties": false
300
+ }
301
+ },
302
+ "required": [
303
+ "format",
304
+ "display"
305
+ ],
306
+ "additionalProperties": false,
307
+ "description": "Issuer metadata-facing credential configuration."
308
+ },
309
+ "fields": {
310
+ "type": "array",
311
+ "items": {
312
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/__schema0"
313
+ },
314
+ "description": "Claim field definitions for credential issuance."
315
+ },
316
+ "attributeProviderId": {
317
+ "description": "Optional attribute provider id used to resolve claim values.",
318
+ "type": [
319
+ "string",
320
+ "null"
321
+ ]
322
+ },
323
+ "webhookEndpointId": {
324
+ "description": "Optional webhook endpoint id notified during issuance events.",
325
+ "type": [
326
+ "string",
327
+ "null"
328
+ ]
329
+ },
330
+ "vct": {
331
+ "description": "Optional VCT value or structured VCT metadata.",
332
+ "anyOf": [
333
+ {
334
+ "type": "string"
335
+ },
336
+ {
337
+ "type": "object",
338
+ "properties": {
339
+ "vct": {
340
+ "description": "VCT identifier.",
341
+ "type": "string"
342
+ },
343
+ "name": {
344
+ "description": "Human-readable VCT name.",
345
+ "type": "string"
346
+ },
347
+ "description": {
348
+ "description": "Optional VCT description.",
349
+ "type": "string"
350
+ },
351
+ "extends": {
352
+ "description": "Optional base VCT reference.",
353
+ "type": "string"
354
+ },
355
+ "extends#integrity": {
356
+ "description": "Integrity hash for the extends reference.",
357
+ "type": "string"
358
+ },
359
+ "schema_uri": {
360
+ "description": "Optional schema URI for the VCT.",
361
+ "type": "string"
362
+ },
363
+ "schema_uri#integrity": {
364
+ "description": "Integrity hash for schema_uri.",
365
+ "type": "string"
366
+ }
367
+ },
368
+ "additionalProperties": false
369
+ },
370
+ {
371
+ "type": "null"
372
+ }
373
+ ]
374
+ },
375
+ "keyBinding": {
376
+ "description": "Enable key binding requirements.",
377
+ "type": "boolean"
378
+ },
379
+ "keyChainId": {
380
+ "description": "Optional key chain id used for credential signing.",
381
+ "type": "string",
382
+ "minLength": 1
383
+ },
384
+ "statusManagement": {
385
+ "description": "Enable status management for issued credentials.",
386
+ "type": "boolean"
387
+ },
388
+ "activeCredentials": {
389
+ "description": "Optional issuer-side policy limiting simultaneously active credentials per subject. Requires statusManagement.",
390
+ "anyOf": [
391
+ {
392
+ "type": "object",
393
+ "properties": {
394
+ "enabled": {
395
+ "type": "boolean",
396
+ "description": "Ensure a subject has at most one active credential of this configuration."
397
+ },
398
+ "tracking": {
399
+ "description": "How the subject's active credential set is tracked. Only 'internal' (pseudonymous, issuer-side) is currently supported.",
400
+ "type": "string",
401
+ "enum": [
402
+ "internal"
403
+ ]
404
+ }
405
+ },
406
+ "required": [
407
+ "enabled"
408
+ ],
409
+ "additionalProperties": false,
410
+ "description": "Issuer-side policy limiting the number of simultaneously active credentials per subject."
411
+ },
412
+ {
413
+ "type": "null"
414
+ }
415
+ ]
416
+ },
417
+ "iaeActions": {
418
+ "description": "Optional in-app experience actions for wallet flows.",
419
+ "anyOf": [
420
+ {
421
+ "type": "array",
422
+ "items": {
423
+ "oneOf": [
424
+ {
425
+ "type": "object",
426
+ "properties": {
427
+ "type": {
428
+ "type": "string",
429
+ "const": "openid4vp_presentation",
430
+ "description": "Trigger an OpenID4VP presentation action."
431
+ },
432
+ "label": {
433
+ "description": "Optional UI label for the action.",
434
+ "type": "string"
435
+ },
436
+ "presentationConfigId": {
437
+ "type": "string",
438
+ "minLength": 1,
439
+ "description": "Presentation configuration id to execute."
440
+ }
441
+ },
442
+ "required": [
443
+ "type",
444
+ "presentationConfigId"
445
+ ],
446
+ "additionalProperties": false
447
+ },
448
+ {
449
+ "type": "object",
450
+ "properties": {
451
+ "type": {
452
+ "type": "string",
453
+ "const": "redirect_to_web",
454
+ "description": "Trigger a redirect-to-web action."
455
+ },
456
+ "label": {
457
+ "description": "Optional UI label for the action.",
458
+ "type": "string"
459
+ },
460
+ "url": {
461
+ "type": "string",
462
+ "format": "uri",
463
+ "description": "Destination URL for the redirect action."
464
+ },
465
+ "callbackUrl": {
466
+ "description": "Optional callback URL after redirect completion.",
467
+ "type": "string",
468
+ "format": "uri"
469
+ },
470
+ "description": {
471
+ "description": "Optional action description.",
472
+ "type": "string"
473
+ }
474
+ },
475
+ "required": [
476
+ "type",
477
+ "url"
478
+ ],
479
+ "additionalProperties": false
480
+ }
481
+ ],
482
+ "description": "In-app experience action definitions."
483
+ }
484
+ },
485
+ {
486
+ "type": "null"
487
+ }
488
+ ]
489
+ },
490
+ "sdJwtTrustFormat": {
491
+ "description": "Trust format used for SD-JWT verification metadata.",
492
+ "anyOf": [
493
+ {
494
+ "type": "string",
495
+ "enum": [
496
+ "x5c",
497
+ "federation"
498
+ ]
499
+ },
500
+ {
501
+ "type": "null"
502
+ }
503
+ ]
504
+ },
505
+ "lifeTime": {
506
+ "description": "Credential lifetime in seconds.",
507
+ "type": "integer",
508
+ "minimum": 1,
509
+ "maximum": 9007199254740991
510
+ },
511
+ "schemaMeta": {
512
+ "description": "Optional schema metadata and trust bindings.",
513
+ "anyOf": [
514
+ {
515
+ "type": "object",
516
+ "properties": {
517
+ "id": {
518
+ "description": "Optional schema metadata identifier.",
519
+ "type": "string"
520
+ },
521
+ "name": {
522
+ "description": "Optional schema metadata name.",
523
+ "type": "string"
524
+ },
525
+ "version": {
526
+ "type": "string",
527
+ "description": "Schema metadata version."
528
+ },
529
+ "rulebookURI": {
530
+ "description": "Optional rulebook URI reference.",
531
+ "type": "string"
532
+ },
533
+ "attestationLoS": {
534
+ "type": "string",
535
+ "enum": [
536
+ "iso_18045_high",
537
+ "iso_18045_moderate",
538
+ "iso_18045_enhanced-basic",
539
+ "iso_18045_basic"
540
+ ],
541
+ "description": "Assurance level for attestation requirements."
542
+ },
543
+ "bindingType": {
544
+ "type": "string",
545
+ "enum": [
546
+ "claim",
547
+ "key",
548
+ "biometric",
549
+ "none"
550
+ ],
551
+ "description": "Subject binding type."
552
+ },
553
+ "schemaURIs": {
554
+ "description": "Optional schema URI entries.",
555
+ "type": "array",
556
+ "items": {
557
+ "type": "object",
558
+ "properties": {
559
+ "credentialConfigId": {
560
+ "description": "Optional credential configuration id this schema URI applies to.",
561
+ "type": "string"
562
+ },
563
+ "format": {
564
+ "description": "Optional credential format for this schema URI.",
565
+ "type": "string"
566
+ },
567
+ "uri": {
568
+ "description": "Schema URI reference.",
569
+ "type": "string"
570
+ },
571
+ "meta": {
572
+ "description": "Optional metadata attached to the schema URI.",
573
+ "type": "object",
574
+ "propertyNames": {
575
+ "type": "string"
576
+ },
577
+ "additionalProperties": {}
578
+ }
579
+ },
580
+ "additionalProperties": false
581
+ }
582
+ },
583
+ "trustedAuthorities": {
584
+ "description": "Optional trusted authority entries.",
585
+ "type": "array",
586
+ "items": {
587
+ "type": "object",
588
+ "properties": {
589
+ "trustListId": {
590
+ "description": "Optional trust list id.",
591
+ "type": "string"
592
+ },
593
+ "frameworkType": {
594
+ "description": "Trust framework type.",
595
+ "type": "string",
596
+ "enum": [
597
+ "aki",
598
+ "etsi_tl",
599
+ "openid_federation"
600
+ ]
601
+ },
602
+ "value": {
603
+ "description": "Framework-specific authority value.",
604
+ "type": "string"
605
+ },
606
+ "verificationMethod": {
607
+ "description": "Verification method descriptor.",
608
+ "anyOf": [
609
+ {
610
+ "type": "object",
611
+ "propertyNames": {
612
+ "type": "string"
613
+ },
614
+ "additionalProperties": {}
615
+ },
616
+ {
617
+ "type": "string"
618
+ }
619
+ ]
620
+ }
621
+ },
622
+ "additionalProperties": false
623
+ }
624
+ }
625
+ },
626
+ "required": [
627
+ "version",
628
+ "attestationLoS",
629
+ "bindingType"
630
+ ],
631
+ "additionalProperties": false
632
+ },
633
+ {
634
+ "type": "null"
635
+ }
636
+ ]
637
+ },
638
+ "embeddedDisclosurePolicy": {
639
+ "description": "Optional embedded disclosure policy.",
640
+ "anyOf": [
641
+ {
642
+ "oneOf": [
643
+ {
644
+ "type": "object",
645
+ "properties": {
646
+ "policy": {
647
+ "type": "string",
648
+ "const": "attestationBased",
649
+ "description": "Attestation-based policy discriminator."
650
+ },
651
+ "values": {
652
+ "type": "array",
653
+ "items": {
654
+ "type": "object",
655
+ "properties": {
656
+ "claims": {
657
+ "description": "Claims constraints considered by policy evaluation.",
658
+ "type": "array",
659
+ "items": {}
660
+ },
661
+ "credentials": {
662
+ "type": "array",
663
+ "items": {},
664
+ "description": "Credential constraints considered by policy evaluation."
665
+ },
666
+ "credential_sets": {
667
+ "description": "Optional credential set constraints.",
668
+ "type": "array",
669
+ "items": {}
670
+ }
671
+ },
672
+ "required": [
673
+ "credentials"
674
+ ],
675
+ "additionalProperties": false
676
+ },
677
+ "description": "Attestation requirements used for policy enforcement."
678
+ }
679
+ },
680
+ "required": [
681
+ "policy",
682
+ "values"
683
+ ],
684
+ "additionalProperties": false
685
+ },
686
+ {
687
+ "type": "object",
688
+ "properties": {
689
+ "policy": {
690
+ "type": "string",
691
+ "const": "none",
692
+ "description": "No disclosure policy enforcement."
693
+ }
694
+ },
695
+ "required": [
696
+ "policy"
697
+ ],
698
+ "additionalProperties": false
699
+ },
700
+ {
701
+ "type": "object",
702
+ "properties": {
703
+ "policy": {
704
+ "type": "string",
705
+ "const": "allowList",
706
+ "description": "Allow-list based policy discriminator."
707
+ },
708
+ "values": {
709
+ "type": "array",
710
+ "items": {
711
+ "type": "string"
712
+ },
713
+ "description": "Allowed values for policy checks."
714
+ }
715
+ },
716
+ "required": [
717
+ "policy",
718
+ "values"
719
+ ],
720
+ "additionalProperties": false
721
+ },
722
+ {
723
+ "type": "object",
724
+ "properties": {
725
+ "policy": {
726
+ "type": "string",
727
+ "const": "rootOfTrust",
728
+ "description": "Root-of-trust policy discriminator."
729
+ },
730
+ "values": {
731
+ "type": "string",
732
+ "description": "Root-of-trust identifier or reference."
733
+ }
734
+ },
735
+ "required": [
736
+ "policy",
737
+ "values"
738
+ ],
739
+ "additionalProperties": false
740
+ }
741
+ ],
742
+ "description": "Embedded disclosure policy configuration."
743
+ },
744
+ {
745
+ "type": "null"
746
+ }
747
+ ]
748
+ }
749
+ },
750
+ "required": [
751
+ "id",
752
+ "config",
753
+ "fields"
754
+ ],
755
+ "additionalProperties": false,
756
+ "description": "Payload for creating credential issuance configuration.",
757
+ "$defs": {
758
+ "__schema0": {
759
+ "type": "object",
760
+ "properties": {
761
+ "path": {
762
+ "type": "array",
763
+ "items": {
764
+ "type": [
765
+ "string",
766
+ "number",
767
+ "null"
768
+ ]
769
+ },
770
+ "description": "Path to this claim inside the credential payload."
771
+ },
772
+ "type": {
773
+ "type": "string",
774
+ "enum": [
775
+ "string",
776
+ "number",
777
+ "integer",
778
+ "boolean",
779
+ "object",
780
+ "array"
781
+ ],
782
+ "description": "Data type of the claim value."
783
+ },
784
+ "defaultValue": {
785
+ "description": "Optional default value for this field."
786
+ },
787
+ "mandatory": {
788
+ "description": "Whether the field is required at issuance time.",
789
+ "type": "boolean"
790
+ },
791
+ "disclosable": {
792
+ "description": "Whether the claim is selectively disclosable.",
793
+ "type": "boolean"
794
+ },
795
+ "namespace": {
796
+ "description": "Optional namespace for claim grouping.",
797
+ "type": "string"
798
+ },
799
+ "display": {
800
+ "description": "Localized display metadata for this field.",
801
+ "type": "array",
802
+ "items": {
803
+ "type": "object",
804
+ "properties": {
805
+ "locale": {
806
+ "type": "string",
807
+ "minLength": 1,
808
+ "description": "Locale tag for the display entry."
809
+ },
810
+ "name": {
811
+ "type": "string",
812
+ "minLength": 1,
813
+ "description": "Human-readable field name."
814
+ },
815
+ "description": {
816
+ "description": "Optional field description for this locale.",
817
+ "type": "string"
818
+ }
819
+ },
820
+ "required": [
821
+ "locale",
822
+ "name"
823
+ ],
824
+ "additionalProperties": false
825
+ }
826
+ },
827
+ "constraints": {
828
+ "description": "Optional validation constraints for the claim value.",
829
+ "type": "object",
830
+ "propertyNames": {
831
+ "type": "string"
832
+ },
833
+ "additionalProperties": {}
834
+ },
835
+ "children": {
836
+ "description": "Nested child claim definitions for object or array fields.",
837
+ "type": "array",
838
+ "items": {
839
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/__schema0"
840
+ }
841
+ }
842
+ },
843
+ "required": [
844
+ "path",
845
+ "type"
846
+ ],
847
+ "additionalProperties": false
848
+ }
849
+ },
850
+ "title": "CredentialConfigCreate"
851
+ }
852
+ }
58
853
  }
59
854
  ]
60
855
  }