@eudiplo/cli 9.1.0-main.a601cfe → 9.1.0-main.a78cbb4

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 (46) hide show
  1. package/dist/commands/config/portability/migrations.spec.js +2 -1
  2. package/dist/commands/config/portability/migrations.spec.js.map +1 -1
  3. package/dist/commands/config/portability/upgrade.d.ts.map +1 -1
  4. package/dist/commands/config/portability/upgrade.js +2 -7
  5. package/dist/commands/config/portability/upgrade.js.map +1 -1
  6. package/dist/commands/config/tenant/action.d.ts.map +1 -1
  7. package/dist/commands/config/tenant/action.js +3 -2
  8. package/dist/commands/config/tenant/action.js.map +1 -1
  9. package/dist/commands/config/validate/registry.json +11 -0
  10. package/dist/commands/config/validate/validator.d.ts.map +1 -1
  11. package/dist/commands/config/validate/validator.js +26 -3
  12. package/dist/commands/config/validate/validator.js.map +1 -1
  13. package/dist/index.js +19459 -7937
  14. package/dist/services/compose-project.d.ts +6 -0
  15. package/dist/services/compose-project.d.ts.map +1 -1
  16. package/dist/services/compose-project.js +13 -2
  17. package/dist/services/compose-project.js.map +1 -1
  18. package/package.json +4 -4
  19. package/templates/demo-config/info.json +1 -1
  20. package/templates/demo-config/issuance/credentials/citizen.json +1 -1
  21. package/templates/demo-config/issuance/credentials/pid-key.json +1 -1
  22. package/templates/demo-config/issuance/credentials/pid-mdoc.json +1 -1
  23. package/templates/demo-config/issuance/credentials/pid.json +1 -1
  24. package/templates/demo-config/issuance/issuance.json +1 -1
  25. package/templates/demo-config/key-chains/access.json +1 -1
  26. package/templates/demo-config/key-chains/attestation.json +1 -1
  27. package/templates/demo-config/key-chains/status-list.json +1 -1
  28. package/templates/demo-config/key-chains/trust-list.json +1 -1
  29. package/templates/demo-config/presentation/age-over-18.json +1 -1
  30. package/templates/demo-config/presentation/pid.json +1 -1
  31. package/templates/docker-compose.yml +2 -2
  32. package/templates/schemas/CreateTenantDto.schema.json +2 -2
  33. package/templates/schemas/CredentialConfigCreate.schema.json +246 -14
  34. package/templates/schemas/CredentialConfigFile.schema.json +1823 -1
  35. package/templates/schemas/ImportTenantDto.schema.json +0 -12
  36. package/templates/schemas/IssuanceConfig.schema.json +3 -8
  37. package/templates/schemas/IssuanceConfigFile.schema.json +814 -1
  38. package/templates/schemas/KeyChainConfigFile.schema.json +371 -1
  39. package/templates/schemas/KeyChainCreateDto.schema.json +1 -0
  40. package/templates/schemas/KeyChainDefaultsConfigFile.schema.json +123 -0
  41. package/templates/schemas/KeyChainImportDto.schema.json +1 -0
  42. package/templates/schemas/PresentationConfigCreateDto.schema.json +16 -0
  43. package/templates/schemas/PresentationConfigFile.schema.json +746 -1
  44. package/templates/schemas/TenantConfigFile.schema.json +139 -25
  45. package/templates/schemas/UpdateTenantDto.schema.json +0 -20
  46. package/templates/schemas.manifest.json +1 -0
@@ -9,7 +9,7 @@
9
9
  "properties": {
10
10
  "$schema": {
11
11
  "type": "string",
12
- "const": "https://eudiplo.dev/schemas/v2/CredentialConfigFile.schema.json"
12
+ "const": "https://eudiplo.dev/schemas/v4/CredentialConfigFile.schema.json"
13
13
  },
14
14
  "metadata": {
15
15
  "type": "object",
@@ -850,6 +850,1828 @@
850
850
  "title": "CredentialConfigCreate"
851
851
  }
852
852
  }
853
+ },
854
+ {
855
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
856
+ "$id": "https://eudiplo.dev/schemas/v2/CredentialConfigFile.schema.json",
857
+ "title": "CredentialConfigFile",
858
+ "type": "object",
859
+ "properties": {
860
+ "$schema": {
861
+ "type": "string",
862
+ "const": "https://eudiplo.dev/schemas/v2/CredentialConfigFile.schema.json"
863
+ },
864
+ "metadata": {
865
+ "type": "object",
866
+ "properties": {
867
+ "generation": {
868
+ "type": "integer",
869
+ "minimum": 1,
870
+ "description": "Monotonically increasing configuration generation."
871
+ },
872
+ "ownership": {
873
+ "type": "string",
874
+ "enum": [
875
+ "unmanaged",
876
+ "file-managed"
877
+ ],
878
+ "description": "Requested ownership recorded when the document is applied."
879
+ }
880
+ },
881
+ "additionalProperties": false
882
+ },
883
+ "spec": {
884
+ "allOf": [
885
+ {
886
+ "$ref": "#/$defs/CredentialConfigCreate"
887
+ },
888
+ {
889
+ "type": "object",
890
+ "required": [
891
+ "id"
892
+ ],
893
+ "properties": {
894
+ "id": {
895
+ "type": "string",
896
+ "minLength": 1
897
+ }
898
+ }
899
+ }
900
+ ]
901
+ }
902
+ },
903
+ "required": [
904
+ "$schema",
905
+ "spec"
906
+ ],
907
+ "additionalProperties": false,
908
+ "$defs": {
909
+ "CredentialConfigCreate": {
910
+ "type": "object",
911
+ "properties": {
912
+ "id": {
913
+ "type": "string",
914
+ "minLength": 1,
915
+ "description": "Credential configuration identifier."
916
+ },
917
+ "description": {
918
+ "description": "Optional description for operators and tooling.",
919
+ "type": [
920
+ "string",
921
+ "null"
922
+ ]
923
+ },
924
+ "config": {
925
+ "type": "object",
926
+ "properties": {
927
+ "format": {
928
+ "type": "string",
929
+ "enum": [
930
+ "mso_mdoc",
931
+ "dc+sd-jwt"
932
+ ],
933
+ "description": "Credential format emitted by this configuration."
934
+ },
935
+ "display": {
936
+ "type": "array",
937
+ "items": {
938
+ "type": "object",
939
+ "properties": {
940
+ "locale": {
941
+ "type": "string",
942
+ "minLength": 1,
943
+ "description": "Locale tag for the display entry."
944
+ },
945
+ "name": {
946
+ "type": "string",
947
+ "minLength": 1,
948
+ "description": "Human-readable field name."
949
+ },
950
+ "description": {
951
+ "description": "Optional field description for this locale.",
952
+ "type": "string"
953
+ },
954
+ "background_color": {
955
+ "description": "Optional background color for card-style rendering.",
956
+ "type": "string"
957
+ },
958
+ "text_color": {
959
+ "description": "Optional text color for card-style rendering.",
960
+ "type": "string"
961
+ },
962
+ "background_image": {
963
+ "description": "Optional background image.",
964
+ "type": "object",
965
+ "properties": {
966
+ "uri": {
967
+ "type": "string",
968
+ "minLength": 1,
969
+ "description": "Image URI."
970
+ }
971
+ },
972
+ "required": [
973
+ "uri"
974
+ ],
975
+ "additionalProperties": false
976
+ },
977
+ "logo": {
978
+ "description": "Optional logo image.",
979
+ "type": "object",
980
+ "properties": {
981
+ "uri": {
982
+ "type": "string",
983
+ "minLength": 1,
984
+ "description": "Image URI."
985
+ }
986
+ },
987
+ "required": [
988
+ "uri"
989
+ ],
990
+ "additionalProperties": false
991
+ }
992
+ },
993
+ "required": [
994
+ "locale",
995
+ "name"
996
+ ],
997
+ "additionalProperties": false
998
+ },
999
+ "description": "Display metadata shown by wallets."
1000
+ },
1001
+ "scope": {
1002
+ "description": "Optional OAuth scope associated with this credential type.",
1003
+ "type": "string"
1004
+ },
1005
+ "docType": {
1006
+ "description": "Optional mDoc document type.",
1007
+ "type": "string"
1008
+ },
1009
+ "keyAttestationsRequired": {
1010
+ "description": "Optional key attestation requirements.",
1011
+ "type": "object",
1012
+ "properties": {
1013
+ "key_storage": {
1014
+ "description": "Required key storage attestations.",
1015
+ "type": "array",
1016
+ "items": {
1017
+ "type": "string"
1018
+ }
1019
+ },
1020
+ "user_authentication": {
1021
+ "description": "Required user authentication attestations.",
1022
+ "type": "array",
1023
+ "items": {
1024
+ "type": "string"
1025
+ }
1026
+ }
1027
+ },
1028
+ "additionalProperties": false
1029
+ },
1030
+ "proofTypesSupported": {
1031
+ "description": "Supported proof types for issuance requests.",
1032
+ "type": "array",
1033
+ "items": {
1034
+ "type": "string",
1035
+ "enum": [
1036
+ "jwt",
1037
+ "attestation"
1038
+ ]
1039
+ }
1040
+ },
1041
+ "credentialReusePolicy": {
1042
+ "description": "Optional PID/EAA reuse policy published in credential metadata.",
1043
+ "type": "object",
1044
+ "properties": {
1045
+ "id": {
1046
+ "type": "string",
1047
+ "minLength": 1
1048
+ },
1049
+ "options": {
1050
+ "type": "array",
1051
+ "items": {
1052
+ "type": "object",
1053
+ "properties": {
1054
+ "details": {
1055
+ "minItems": 1,
1056
+ "type": "array",
1057
+ "items": {
1058
+ "type": "string",
1059
+ "enum": [
1060
+ "once_only",
1061
+ "limited_time",
1062
+ "limited-time",
1063
+ "rotating-batch",
1064
+ "per-relying-party"
1065
+ ]
1066
+ }
1067
+ },
1068
+ "batch_size": {
1069
+ "type": "integer",
1070
+ "minimum": 2,
1071
+ "maximum": 9007199254740991
1072
+ },
1073
+ "reissue_trigger_unused": {
1074
+ "type": "integer",
1075
+ "minimum": 0,
1076
+ "maximum": 9007199254740991
1077
+ },
1078
+ "reissue_trigger_lifetime_left": {
1079
+ "type": "integer",
1080
+ "minimum": 0,
1081
+ "maximum": 9007199254740991
1082
+ }
1083
+ },
1084
+ "required": [
1085
+ "details"
1086
+ ],
1087
+ "additionalProperties": false
1088
+ }
1089
+ }
1090
+ },
1091
+ "required": [
1092
+ "id"
1093
+ ],
1094
+ "additionalProperties": false
1095
+ }
1096
+ },
1097
+ "required": [
1098
+ "format",
1099
+ "display"
1100
+ ],
1101
+ "additionalProperties": false,
1102
+ "description": "Issuer metadata-facing credential configuration."
1103
+ },
1104
+ "fields": {
1105
+ "type": "array",
1106
+ "items": {
1107
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/__schema0"
1108
+ },
1109
+ "description": "Claim field definitions for credential issuance."
1110
+ },
1111
+ "attributeProviderId": {
1112
+ "description": "Optional attribute provider id used to resolve claim values.",
1113
+ "type": [
1114
+ "string",
1115
+ "null"
1116
+ ]
1117
+ },
1118
+ "webhookEndpointId": {
1119
+ "description": "Not used for notifications: they go to the webhook endpoint of the offer.",
1120
+ "type": [
1121
+ "string",
1122
+ "null"
1123
+ ]
1124
+ },
1125
+ "vct": {
1126
+ "description": "Optional VCT value or structured VCT metadata.",
1127
+ "anyOf": [
1128
+ {
1129
+ "type": "string"
1130
+ },
1131
+ {
1132
+ "type": "object",
1133
+ "properties": {
1134
+ "vct": {
1135
+ "description": "VCT identifier.",
1136
+ "type": "string"
1137
+ },
1138
+ "name": {
1139
+ "description": "Human-readable VCT name.",
1140
+ "type": "string"
1141
+ },
1142
+ "description": {
1143
+ "description": "Optional VCT description.",
1144
+ "type": "string"
1145
+ },
1146
+ "extends": {
1147
+ "description": "Optional base VCT reference.",
1148
+ "type": "string"
1149
+ },
1150
+ "extends#integrity": {
1151
+ "description": "Integrity hash for the extends reference.",
1152
+ "type": "string"
1153
+ },
1154
+ "schema_uri": {
1155
+ "description": "Optional schema URI for the VCT.",
1156
+ "type": "string"
1157
+ },
1158
+ "schema_uri#integrity": {
1159
+ "description": "Integrity hash for schema_uri.",
1160
+ "type": "string"
1161
+ }
1162
+ },
1163
+ "additionalProperties": false
1164
+ },
1165
+ {
1166
+ "type": "null"
1167
+ }
1168
+ ]
1169
+ },
1170
+ "keyBinding": {
1171
+ "description": "Enable key binding requirements.",
1172
+ "type": "boolean"
1173
+ },
1174
+ "keyChainId": {
1175
+ "description": "Optional key chain id used for credential signing.",
1176
+ "type": "string",
1177
+ "minLength": 1
1178
+ },
1179
+ "statusManagement": {
1180
+ "description": "Enable status management for issued credentials.",
1181
+ "type": "boolean"
1182
+ },
1183
+ "activeCredentials": {
1184
+ "description": "Optional issuer-side policy limiting simultaneously active credentials per subject. Requires statusManagement.",
1185
+ "anyOf": [
1186
+ {
1187
+ "type": "object",
1188
+ "properties": {
1189
+ "enabled": {
1190
+ "type": "boolean",
1191
+ "description": "Ensure a subject has at most one active credential of this configuration."
1192
+ },
1193
+ "tracking": {
1194
+ "description": "How the subject's active credential set is tracked. Only 'internal' (pseudonymous, issuer-side) is currently supported.",
1195
+ "type": "string",
1196
+ "enum": [
1197
+ "internal"
1198
+ ]
1199
+ }
1200
+ },
1201
+ "required": [
1202
+ "enabled"
1203
+ ],
1204
+ "additionalProperties": false,
1205
+ "description": "Issuer-side policy limiting the number of simultaneously active credentials per subject."
1206
+ },
1207
+ {
1208
+ "type": "null"
1209
+ }
1210
+ ]
1211
+ },
1212
+ "iaeActions": {
1213
+ "description": "Interactive authorization steps (a presentation or a web flow) that the wallet completes, in order, before the credential is issued.",
1214
+ "anyOf": [
1215
+ {
1216
+ "type": "array",
1217
+ "items": {
1218
+ "oneOf": [
1219
+ {
1220
+ "type": "object",
1221
+ "properties": {
1222
+ "type": {
1223
+ "type": "string",
1224
+ "const": "openid4vp_presentation",
1225
+ "description": "Trigger an OpenID4VP presentation action."
1226
+ },
1227
+ "label": {
1228
+ "description": "Optional UI label for the action.",
1229
+ "type": "string"
1230
+ },
1231
+ "presentationConfigId": {
1232
+ "type": "string",
1233
+ "minLength": 1,
1234
+ "description": "Presentation configuration id to execute."
1235
+ }
1236
+ },
1237
+ "required": [
1238
+ "type",
1239
+ "presentationConfigId"
1240
+ ],
1241
+ "additionalProperties": false
1242
+ },
1243
+ {
1244
+ "type": "object",
1245
+ "properties": {
1246
+ "type": {
1247
+ "type": "string",
1248
+ "const": "redirect_to_web",
1249
+ "description": "Trigger a redirect-to-web action."
1250
+ },
1251
+ "label": {
1252
+ "description": "Optional UI label for the action.",
1253
+ "type": "string"
1254
+ },
1255
+ "url": {
1256
+ "type": "string",
1257
+ "format": "uri",
1258
+ "description": "Destination URL for the redirect action."
1259
+ },
1260
+ "callbackUrl": {
1261
+ "description": "Optional callback URL after redirect completion.",
1262
+ "type": "string",
1263
+ "format": "uri"
1264
+ },
1265
+ "description": {
1266
+ "description": "Optional action description.",
1267
+ "type": "string"
1268
+ }
1269
+ },
1270
+ "required": [
1271
+ "type",
1272
+ "url"
1273
+ ],
1274
+ "additionalProperties": false
1275
+ }
1276
+ ],
1277
+ "description": "In-app experience action definitions."
1278
+ }
1279
+ },
1280
+ {
1281
+ "type": "null"
1282
+ }
1283
+ ]
1284
+ },
1285
+ "sdJwtTrustFormat": {
1286
+ "description": "Trust format used for SD-JWT verification metadata.",
1287
+ "anyOf": [
1288
+ {
1289
+ "type": "string",
1290
+ "enum": [
1291
+ "x5c",
1292
+ "federation"
1293
+ ]
1294
+ },
1295
+ {
1296
+ "type": "null"
1297
+ }
1298
+ ]
1299
+ },
1300
+ "lifeTime": {
1301
+ "description": "Credential lifetime in seconds.",
1302
+ "type": "integer",
1303
+ "minimum": 1,
1304
+ "maximum": 9007199254740991
1305
+ },
1306
+ "schemaMeta": {
1307
+ "description": "Optional schema metadata and trust bindings.",
1308
+ "anyOf": [
1309
+ {
1310
+ "type": "object",
1311
+ "properties": {
1312
+ "id": {
1313
+ "description": "Optional schema metadata identifier.",
1314
+ "type": "string"
1315
+ },
1316
+ "name": {
1317
+ "description": "Optional schema metadata name.",
1318
+ "type": "string"
1319
+ },
1320
+ "version": {
1321
+ "type": "string",
1322
+ "description": "Schema metadata version."
1323
+ },
1324
+ "rulebookURI": {
1325
+ "description": "Optional rulebook URI reference.",
1326
+ "type": "string"
1327
+ },
1328
+ "attestationLoS": {
1329
+ "type": "string",
1330
+ "enum": [
1331
+ "iso_18045_high",
1332
+ "iso_18045_moderate",
1333
+ "iso_18045_enhanced-basic",
1334
+ "iso_18045_basic"
1335
+ ],
1336
+ "description": "Assurance level for attestation requirements."
1337
+ },
1338
+ "bindingType": {
1339
+ "type": "string",
1340
+ "enum": [
1341
+ "claim",
1342
+ "key",
1343
+ "biometric",
1344
+ "none"
1345
+ ],
1346
+ "description": "Subject binding type."
1347
+ },
1348
+ "schemaURIs": {
1349
+ "description": "Optional schema URI entries.",
1350
+ "type": "array",
1351
+ "items": {
1352
+ "type": "object",
1353
+ "properties": {
1354
+ "credentialConfigId": {
1355
+ "description": "Optional credential configuration id this schema URI applies to.",
1356
+ "type": "string"
1357
+ },
1358
+ "format": {
1359
+ "description": "Optional credential format for this schema URI.",
1360
+ "type": "string"
1361
+ },
1362
+ "uri": {
1363
+ "description": "Schema URI reference.",
1364
+ "type": "string"
1365
+ },
1366
+ "meta": {
1367
+ "description": "Optional metadata attached to the schema URI.",
1368
+ "type": "object",
1369
+ "propertyNames": {
1370
+ "type": "string"
1371
+ },
1372
+ "additionalProperties": {}
1373
+ }
1374
+ },
1375
+ "additionalProperties": false
1376
+ }
1377
+ },
1378
+ "trustedAuthorities": {
1379
+ "description": "Optional trusted authority entries.",
1380
+ "type": "array",
1381
+ "items": {
1382
+ "type": "object",
1383
+ "properties": {
1384
+ "trustListId": {
1385
+ "description": "Optional trust list id.",
1386
+ "type": "string"
1387
+ },
1388
+ "frameworkType": {
1389
+ "description": "Trust framework type. `x509` takes a root certificate in `value` and no `verificationMethod`.",
1390
+ "type": "string",
1391
+ "enum": [
1392
+ "aki",
1393
+ "etsi_tl",
1394
+ "openid_federation",
1395
+ "x509"
1396
+ ]
1397
+ },
1398
+ "value": {
1399
+ "description": "Framework-specific authority value, for example the trust list URL for `etsi_tl` or the root certificate (base64 DER or PEM) for `x509`.",
1400
+ "type": "string"
1401
+ },
1402
+ "verificationMethod": {
1403
+ "description": "Verification method descriptor.",
1404
+ "anyOf": [
1405
+ {
1406
+ "type": "object",
1407
+ "propertyNames": {
1408
+ "type": "string"
1409
+ },
1410
+ "additionalProperties": {}
1411
+ },
1412
+ {
1413
+ "type": "string"
1414
+ }
1415
+ ]
1416
+ }
1417
+ },
1418
+ "additionalProperties": false
1419
+ }
1420
+ }
1421
+ },
1422
+ "required": [
1423
+ "version",
1424
+ "attestationLoS",
1425
+ "bindingType"
1426
+ ],
1427
+ "additionalProperties": false
1428
+ },
1429
+ {
1430
+ "type": "null"
1431
+ }
1432
+ ]
1433
+ },
1434
+ "embeddedDisclosurePolicy": {
1435
+ "description": "Optional embedded disclosure policy.",
1436
+ "anyOf": [
1437
+ {
1438
+ "oneOf": [
1439
+ {
1440
+ "type": "object",
1441
+ "properties": {
1442
+ "policy": {
1443
+ "type": "string",
1444
+ "const": "attestationBased",
1445
+ "description": "Attestation-based policy discriminator."
1446
+ },
1447
+ "values": {
1448
+ "type": "array",
1449
+ "items": {
1450
+ "type": "object",
1451
+ "properties": {
1452
+ "claims": {
1453
+ "description": "Claims constraints considered by policy evaluation.",
1454
+ "type": "array",
1455
+ "items": {}
1456
+ },
1457
+ "credentials": {
1458
+ "type": "array",
1459
+ "items": {},
1460
+ "description": "Credential constraints considered by policy evaluation."
1461
+ },
1462
+ "credential_sets": {
1463
+ "description": "Optional credential set constraints.",
1464
+ "type": "array",
1465
+ "items": {}
1466
+ }
1467
+ },
1468
+ "required": [
1469
+ "credentials"
1470
+ ],
1471
+ "additionalProperties": false
1472
+ },
1473
+ "description": "Attestation requirements used for policy enforcement."
1474
+ }
1475
+ },
1476
+ "required": [
1477
+ "policy",
1478
+ "values"
1479
+ ],
1480
+ "additionalProperties": false
1481
+ },
1482
+ {
1483
+ "type": "object",
1484
+ "properties": {
1485
+ "policy": {
1486
+ "type": "string",
1487
+ "const": "none",
1488
+ "description": "No disclosure policy enforcement."
1489
+ }
1490
+ },
1491
+ "required": [
1492
+ "policy"
1493
+ ],
1494
+ "additionalProperties": false
1495
+ },
1496
+ {
1497
+ "type": "object",
1498
+ "properties": {
1499
+ "policy": {
1500
+ "type": "string",
1501
+ "const": "allowList",
1502
+ "description": "Allow-list based policy discriminator."
1503
+ },
1504
+ "values": {
1505
+ "type": "array",
1506
+ "items": {
1507
+ "type": "string"
1508
+ },
1509
+ "description": "Allowed values for policy checks."
1510
+ }
1511
+ },
1512
+ "required": [
1513
+ "policy",
1514
+ "values"
1515
+ ],
1516
+ "additionalProperties": false
1517
+ },
1518
+ {
1519
+ "type": "object",
1520
+ "properties": {
1521
+ "policy": {
1522
+ "type": "string",
1523
+ "const": "rootOfTrust",
1524
+ "description": "Root-of-trust policy discriminator."
1525
+ },
1526
+ "values": {
1527
+ "type": "string",
1528
+ "description": "Root-of-trust identifier or reference."
1529
+ }
1530
+ },
1531
+ "required": [
1532
+ "policy",
1533
+ "values"
1534
+ ],
1535
+ "additionalProperties": false
1536
+ }
1537
+ ],
1538
+ "description": "Embedded disclosure policy configuration."
1539
+ },
1540
+ {
1541
+ "type": "null"
1542
+ }
1543
+ ]
1544
+ }
1545
+ },
1546
+ "required": [
1547
+ "id",
1548
+ "config",
1549
+ "fields"
1550
+ ],
1551
+ "additionalProperties": false,
1552
+ "description": "Payload for creating credential issuance configuration.",
1553
+ "$defs": {
1554
+ "__schema0": {
1555
+ "type": "object",
1556
+ "properties": {
1557
+ "path": {
1558
+ "type": "array",
1559
+ "items": {
1560
+ "type": [
1561
+ "string",
1562
+ "number",
1563
+ "null"
1564
+ ]
1565
+ },
1566
+ "description": "Path to this claim inside the credential payload."
1567
+ },
1568
+ "type": {
1569
+ "type": "string",
1570
+ "enum": [
1571
+ "string",
1572
+ "number",
1573
+ "integer",
1574
+ "boolean",
1575
+ "object",
1576
+ "array"
1577
+ ],
1578
+ "description": "Data type of the claim value."
1579
+ },
1580
+ "defaultValue": {
1581
+ "description": "Optional default value for this field."
1582
+ },
1583
+ "mandatory": {
1584
+ "description": "Whether the field is required at issuance time.",
1585
+ "type": "boolean"
1586
+ },
1587
+ "disclosable": {
1588
+ "description": "Whether the claim is selectively disclosable.",
1589
+ "type": "boolean"
1590
+ },
1591
+ "namespace": {
1592
+ "description": "Optional namespace for claim grouping.",
1593
+ "type": "string"
1594
+ },
1595
+ "display": {
1596
+ "description": "Localized display metadata for this field.",
1597
+ "type": "array",
1598
+ "items": {
1599
+ "type": "object",
1600
+ "properties": {
1601
+ "locale": {
1602
+ "type": "string",
1603
+ "minLength": 1,
1604
+ "description": "Locale tag for the display entry."
1605
+ },
1606
+ "name": {
1607
+ "type": "string",
1608
+ "minLength": 1,
1609
+ "description": "Human-readable field name."
1610
+ },
1611
+ "description": {
1612
+ "description": "Optional field description for this locale.",
1613
+ "type": "string"
1614
+ }
1615
+ },
1616
+ "required": [
1617
+ "locale",
1618
+ "name"
1619
+ ],
1620
+ "additionalProperties": false
1621
+ }
1622
+ },
1623
+ "constraints": {
1624
+ "description": "Optional validation constraints for the claim value.",
1625
+ "type": "object",
1626
+ "propertyNames": {
1627
+ "type": "string"
1628
+ },
1629
+ "additionalProperties": {}
1630
+ },
1631
+ "children": {
1632
+ "description": "Nested child claim definitions for object or array fields.",
1633
+ "type": "array",
1634
+ "items": {
1635
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/__schema0"
1636
+ }
1637
+ }
1638
+ },
1639
+ "required": [
1640
+ "path",
1641
+ "type"
1642
+ ],
1643
+ "additionalProperties": false
1644
+ }
1645
+ },
1646
+ "title": "CredentialConfigCreate"
1647
+ }
1648
+ }
1649
+ },
1650
+ {
1651
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1652
+ "$id": "https://eudiplo.dev/schemas/v3/CredentialConfigFile.schema.json",
1653
+ "title": "CredentialConfigFile",
1654
+ "type": "object",
1655
+ "properties": {
1656
+ "$schema": {
1657
+ "type": "string",
1658
+ "const": "https://eudiplo.dev/schemas/v3/CredentialConfigFile.schema.json"
1659
+ },
1660
+ "metadata": {
1661
+ "type": "object",
1662
+ "properties": {
1663
+ "generation": {
1664
+ "type": "integer",
1665
+ "minimum": 1,
1666
+ "description": "Monotonically increasing configuration generation."
1667
+ },
1668
+ "ownership": {
1669
+ "type": "string",
1670
+ "enum": [
1671
+ "unmanaged",
1672
+ "file-managed"
1673
+ ],
1674
+ "description": "Requested ownership recorded when the document is applied."
1675
+ }
1676
+ },
1677
+ "additionalProperties": false
1678
+ },
1679
+ "spec": {
1680
+ "allOf": [
1681
+ {
1682
+ "$ref": "#/$defs/CredentialConfigCreate"
1683
+ },
1684
+ {
1685
+ "type": "object",
1686
+ "required": [
1687
+ "id"
1688
+ ],
1689
+ "properties": {
1690
+ "id": {
1691
+ "type": "string",
1692
+ "minLength": 1
1693
+ }
1694
+ }
1695
+ }
1696
+ ]
1697
+ }
1698
+ },
1699
+ "required": [
1700
+ "$schema",
1701
+ "spec"
1702
+ ],
1703
+ "additionalProperties": false,
1704
+ "$defs": {
1705
+ "CredentialConfigCreate": {
1706
+ "type": "object",
1707
+ "properties": {
1708
+ "id": {
1709
+ "type": "string",
1710
+ "minLength": 1,
1711
+ "description": "Credential configuration identifier."
1712
+ },
1713
+ "description": {
1714
+ "description": "Optional description for operators and tooling.",
1715
+ "type": [
1716
+ "string",
1717
+ "null"
1718
+ ]
1719
+ },
1720
+ "config": {
1721
+ "type": "object",
1722
+ "properties": {
1723
+ "format": {
1724
+ "type": "string",
1725
+ "enum": [
1726
+ "mso_mdoc",
1727
+ "dc+sd-jwt"
1728
+ ],
1729
+ "description": "Credential format emitted by this configuration."
1730
+ },
1731
+ "display": {
1732
+ "type": "array",
1733
+ "items": {
1734
+ "type": "object",
1735
+ "properties": {
1736
+ "locale": {
1737
+ "type": "string",
1738
+ "minLength": 1,
1739
+ "description": "Locale tag for the display entry."
1740
+ },
1741
+ "name": {
1742
+ "type": "string",
1743
+ "minLength": 1,
1744
+ "description": "Human-readable field name."
1745
+ },
1746
+ "description": {
1747
+ "description": "Optional field description for this locale.",
1748
+ "type": "string"
1749
+ },
1750
+ "background_color": {
1751
+ "description": "Optional background color for card-style rendering.",
1752
+ "type": "string"
1753
+ },
1754
+ "text_color": {
1755
+ "description": "Optional text color for card-style rendering.",
1756
+ "type": "string"
1757
+ },
1758
+ "background_image": {
1759
+ "description": "Optional background image.",
1760
+ "type": "object",
1761
+ "properties": {
1762
+ "uri": {
1763
+ "type": "string",
1764
+ "minLength": 1,
1765
+ "description": "Image URI."
1766
+ }
1767
+ },
1768
+ "required": [
1769
+ "uri"
1770
+ ],
1771
+ "additionalProperties": false
1772
+ },
1773
+ "logo": {
1774
+ "description": "Optional logo image.",
1775
+ "type": "object",
1776
+ "properties": {
1777
+ "uri": {
1778
+ "type": "string",
1779
+ "minLength": 1,
1780
+ "description": "Image URI."
1781
+ }
1782
+ },
1783
+ "required": [
1784
+ "uri"
1785
+ ],
1786
+ "additionalProperties": false
1787
+ }
1788
+ },
1789
+ "required": [
1790
+ "locale",
1791
+ "name"
1792
+ ],
1793
+ "additionalProperties": false
1794
+ },
1795
+ "description": "Display metadata shown by wallets."
1796
+ },
1797
+ "scope": {
1798
+ "description": "Optional OAuth scope associated with this credential type.",
1799
+ "type": "string"
1800
+ },
1801
+ "docType": {
1802
+ "description": "Optional mDoc document type.",
1803
+ "type": "string"
1804
+ },
1805
+ "keyAttestationsRequired": {
1806
+ "description": "Optional key attestation requirements.",
1807
+ "type": "object",
1808
+ "properties": {
1809
+ "key_storage": {
1810
+ "description": "Required key storage attestations.",
1811
+ "type": "array",
1812
+ "items": {
1813
+ "type": "string"
1814
+ }
1815
+ },
1816
+ "user_authentication": {
1817
+ "description": "Required user authentication attestations.",
1818
+ "type": "array",
1819
+ "items": {
1820
+ "type": "string"
1821
+ }
1822
+ }
1823
+ },
1824
+ "additionalProperties": false
1825
+ },
1826
+ "proofTypesSupported": {
1827
+ "description": "Supported proof types for issuance requests.",
1828
+ "type": "array",
1829
+ "items": {
1830
+ "type": "string",
1831
+ "enum": [
1832
+ "jwt",
1833
+ "attestation"
1834
+ ]
1835
+ }
1836
+ },
1837
+ "credentialReusePolicy": {
1838
+ "description": "Optional PID/EAA reuse policy published in credential metadata.",
1839
+ "type": "object",
1840
+ "properties": {
1841
+ "id": {
1842
+ "type": "string",
1843
+ "minLength": 1
1844
+ },
1845
+ "options": {
1846
+ "type": "array",
1847
+ "items": {
1848
+ "type": "object",
1849
+ "properties": {
1850
+ "details": {
1851
+ "minItems": 1,
1852
+ "type": "array",
1853
+ "items": {
1854
+ "type": "string",
1855
+ "enum": [
1856
+ "once_only",
1857
+ "limited_time",
1858
+ "limited-time",
1859
+ "rotating-batch",
1860
+ "per-relying-party"
1861
+ ]
1862
+ }
1863
+ },
1864
+ "batch_size": {
1865
+ "type": "integer",
1866
+ "minimum": 2,
1867
+ "maximum": 9007199254740991
1868
+ },
1869
+ "reissue_trigger_unused": {
1870
+ "type": "integer",
1871
+ "minimum": 0,
1872
+ "maximum": 9007199254740991
1873
+ },
1874
+ "reissue_trigger_lifetime_left": {
1875
+ "type": "integer",
1876
+ "minimum": 0,
1877
+ "maximum": 9007199254740991
1878
+ }
1879
+ },
1880
+ "required": [
1881
+ "details"
1882
+ ],
1883
+ "additionalProperties": false
1884
+ }
1885
+ }
1886
+ },
1887
+ "required": [
1888
+ "id"
1889
+ ],
1890
+ "additionalProperties": false
1891
+ }
1892
+ },
1893
+ "required": [
1894
+ "format",
1895
+ "display"
1896
+ ],
1897
+ "additionalProperties": false,
1898
+ "description": "Issuer metadata-facing credential configuration."
1899
+ },
1900
+ "fields": {
1901
+ "type": "array",
1902
+ "items": {
1903
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/__schema0"
1904
+ },
1905
+ "description": "Claim field definitions for credential issuance."
1906
+ },
1907
+ "attributeProviderId": {
1908
+ "description": "Optional attribute provider id used to resolve claim values.",
1909
+ "type": [
1910
+ "string",
1911
+ "null"
1912
+ ]
1913
+ },
1914
+ "webhookEndpointId": {
1915
+ "description": "Not used for notifications: they go to the webhook endpoint of the offer.",
1916
+ "type": [
1917
+ "string",
1918
+ "null"
1919
+ ]
1920
+ },
1921
+ "vct": {
1922
+ "description": "Optional VCT value or structured VCT metadata.",
1923
+ "anyOf": [
1924
+ {
1925
+ "type": "string"
1926
+ },
1927
+ {
1928
+ "type": "object",
1929
+ "properties": {
1930
+ "vct": {
1931
+ "description": "VCT identifier.",
1932
+ "type": "string"
1933
+ },
1934
+ "name": {
1935
+ "description": "Human-readable VCT name.",
1936
+ "type": "string"
1937
+ },
1938
+ "description": {
1939
+ "description": "Optional VCT description.",
1940
+ "type": "string"
1941
+ },
1942
+ "extends": {
1943
+ "description": "Optional base VCT reference.",
1944
+ "type": "string"
1945
+ },
1946
+ "extends#integrity": {
1947
+ "description": "Integrity hash for the extends reference.",
1948
+ "type": "string"
1949
+ },
1950
+ "schema_uri": {
1951
+ "description": "Optional schema URI for the VCT.",
1952
+ "type": "string"
1953
+ },
1954
+ "schema_uri#integrity": {
1955
+ "description": "Integrity hash for schema_uri.",
1956
+ "type": "string"
1957
+ }
1958
+ },
1959
+ "additionalProperties": false
1960
+ },
1961
+ {
1962
+ "type": "null"
1963
+ }
1964
+ ]
1965
+ },
1966
+ "keyBinding": {
1967
+ "description": "Enable key binding requirements.",
1968
+ "type": "boolean"
1969
+ },
1970
+ "keyChainId": {
1971
+ "description": "Optional key chain id used for credential signing.",
1972
+ "type": "string",
1973
+ "minLength": 1
1974
+ },
1975
+ "statusManagement": {
1976
+ "description": "Enable status management for issued credentials.",
1977
+ "type": "boolean"
1978
+ },
1979
+ "activeCredentials": {
1980
+ "description": "Optional issuer-side policy limiting simultaneously active credentials per subject. Requires statusManagement.",
1981
+ "anyOf": [
1982
+ {
1983
+ "type": "object",
1984
+ "properties": {
1985
+ "enabled": {
1986
+ "type": "boolean",
1987
+ "description": "Ensure a subject has at most one active credential of this configuration."
1988
+ },
1989
+ "tracking": {
1990
+ "description": "How the subject's active credential set is tracked. Only 'internal' (pseudonymous, issuer-side) is currently supported.",
1991
+ "type": "string",
1992
+ "enum": [
1993
+ "internal"
1994
+ ]
1995
+ }
1996
+ },
1997
+ "required": [
1998
+ "enabled"
1999
+ ],
2000
+ "additionalProperties": false,
2001
+ "description": "Issuer-side policy limiting the number of simultaneously active credentials per subject."
2002
+ },
2003
+ {
2004
+ "type": "null"
2005
+ }
2006
+ ]
2007
+ },
2008
+ "iaeActions": {
2009
+ "description": "Interactive authorization steps (a presentation or a web flow) that the wallet completes, in order, before the credential is issued.",
2010
+ "anyOf": [
2011
+ {
2012
+ "type": "array",
2013
+ "items": {
2014
+ "oneOf": [
2015
+ {
2016
+ "type": "object",
2017
+ "properties": {
2018
+ "type": {
2019
+ "type": "string",
2020
+ "const": "openid4vp_presentation",
2021
+ "description": "Trigger an OpenID4VP presentation action."
2022
+ },
2023
+ "label": {
2024
+ "description": "Optional UI label for the action.",
2025
+ "type": "string"
2026
+ },
2027
+ "presentationConfigId": {
2028
+ "type": "string",
2029
+ "minLength": 1,
2030
+ "description": "Presentation configuration id to execute."
2031
+ }
2032
+ },
2033
+ "required": [
2034
+ "type",
2035
+ "presentationConfigId"
2036
+ ],
2037
+ "additionalProperties": false
2038
+ },
2039
+ {
2040
+ "type": "object",
2041
+ "properties": {
2042
+ "type": {
2043
+ "type": "string",
2044
+ "const": "redirect_to_web",
2045
+ "description": "Trigger a redirect-to-web action."
2046
+ },
2047
+ "label": {
2048
+ "description": "Optional UI label for the action.",
2049
+ "type": "string"
2050
+ },
2051
+ "url": {
2052
+ "type": "string",
2053
+ "format": "uri",
2054
+ "description": "Destination URL for the redirect action."
2055
+ },
2056
+ "callbackUrl": {
2057
+ "description": "Optional callback URL after redirect completion.",
2058
+ "type": "string",
2059
+ "format": "uri"
2060
+ },
2061
+ "description": {
2062
+ "description": "Optional action description.",
2063
+ "type": "string"
2064
+ }
2065
+ },
2066
+ "required": [
2067
+ "type",
2068
+ "url"
2069
+ ],
2070
+ "additionalProperties": false
2071
+ }
2072
+ ],
2073
+ "description": "In-app experience action definitions."
2074
+ }
2075
+ },
2076
+ {
2077
+ "type": "null"
2078
+ }
2079
+ ]
2080
+ },
2081
+ "sdJwtTrustFormat": {
2082
+ "description": "Trust format used for SD-JWT verification metadata.",
2083
+ "anyOf": [
2084
+ {
2085
+ "type": "string",
2086
+ "enum": [
2087
+ "x5c",
2088
+ "federation"
2089
+ ]
2090
+ },
2091
+ {
2092
+ "type": "null"
2093
+ }
2094
+ ]
2095
+ },
2096
+ "lifeTime": {
2097
+ "description": "Credential lifetime in seconds.",
2098
+ "type": "integer",
2099
+ "minimum": 1,
2100
+ "maximum": 9007199254740991
2101
+ },
2102
+ "schemaMeta": {
2103
+ "description": "Optional schema metadata and trust bindings.",
2104
+ "anyOf": [
2105
+ {
2106
+ "type": "object",
2107
+ "properties": {
2108
+ "id": {
2109
+ "description": "Optional schema metadata identifier.",
2110
+ "type": "string"
2111
+ },
2112
+ "name": {
2113
+ "description": "Optional schema metadata name.",
2114
+ "type": "string"
2115
+ },
2116
+ "version": {
2117
+ "type": "string",
2118
+ "description": "Schema metadata version."
2119
+ },
2120
+ "rulebookURI": {
2121
+ "description": "Optional rulebook URI reference.",
2122
+ "type": "string"
2123
+ },
2124
+ "attestationLoS": {
2125
+ "type": "string",
2126
+ "enum": [
2127
+ "iso_18045_high",
2128
+ "iso_18045_moderate",
2129
+ "iso_18045_enhanced-basic",
2130
+ "iso_18045_basic"
2131
+ ],
2132
+ "description": "Assurance level for attestation requirements."
2133
+ },
2134
+ "bindingType": {
2135
+ "type": "string",
2136
+ "enum": [
2137
+ "claim",
2138
+ "key",
2139
+ "biometric",
2140
+ "none"
2141
+ ],
2142
+ "description": "Subject binding type."
2143
+ },
2144
+ "schemaURIs": {
2145
+ "description": "Optional schema URI entries.",
2146
+ "type": "array",
2147
+ "items": {
2148
+ "type": "object",
2149
+ "properties": {
2150
+ "credentialConfigId": {
2151
+ "description": "Optional credential configuration id this schema URI applies to.",
2152
+ "type": "string"
2153
+ },
2154
+ "format": {
2155
+ "description": "Optional credential format for this schema URI.",
2156
+ "type": "string"
2157
+ },
2158
+ "uri": {
2159
+ "description": "Schema URI reference.",
2160
+ "type": "string"
2161
+ },
2162
+ "meta": {
2163
+ "description": "Optional metadata attached to the schema URI.",
2164
+ "type": "object",
2165
+ "propertyNames": {
2166
+ "type": "string"
2167
+ },
2168
+ "additionalProperties": {}
2169
+ }
2170
+ },
2171
+ "additionalProperties": false
2172
+ }
2173
+ },
2174
+ "trustedAuthorities": {
2175
+ "description": "Optional trusted authority entries.",
2176
+ "type": "array",
2177
+ "items": {
2178
+ "type": "object",
2179
+ "properties": {
2180
+ "trustListId": {
2181
+ "description": "Optional trust list id.",
2182
+ "type": "string"
2183
+ },
2184
+ "frameworkType": {
2185
+ "description": "Trust framework type. `x509` takes a root certificate in `value` and no `verificationMethod`.",
2186
+ "type": "string",
2187
+ "enum": [
2188
+ "aki",
2189
+ "etsi_tl",
2190
+ "openid_federation",
2191
+ "x509"
2192
+ ]
2193
+ },
2194
+ "value": {
2195
+ "description": "Framework-specific authority value, for example the trust list URL for `etsi_tl` or the root certificate (base64 DER or PEM) for `x509`.",
2196
+ "type": "string"
2197
+ },
2198
+ "verificationMethod": {
2199
+ "description": "Verification method descriptor.",
2200
+ "anyOf": [
2201
+ {
2202
+ "type": "object",
2203
+ "propertyNames": {
2204
+ "type": "string"
2205
+ },
2206
+ "additionalProperties": {}
2207
+ },
2208
+ {
2209
+ "type": "string"
2210
+ }
2211
+ ]
2212
+ }
2213
+ },
2214
+ "additionalProperties": false
2215
+ }
2216
+ }
2217
+ },
2218
+ "required": [
2219
+ "version",
2220
+ "attestationLoS",
2221
+ "bindingType"
2222
+ ],
2223
+ "additionalProperties": false
2224
+ },
2225
+ {
2226
+ "type": "null"
2227
+ }
2228
+ ]
2229
+ },
2230
+ "embeddedDisclosurePolicy": {
2231
+ "description": "Optional embedded disclosure policy.",
2232
+ "anyOf": [
2233
+ {
2234
+ "oneOf": [
2235
+ {
2236
+ "type": "object",
2237
+ "properties": {
2238
+ "policy": {
2239
+ "type": "string",
2240
+ "const": "attestationBased",
2241
+ "description": "Attestation-based policy discriminator."
2242
+ },
2243
+ "values": {
2244
+ "type": "array",
2245
+ "items": {
2246
+ "type": "object",
2247
+ "properties": {
2248
+ "claims": {
2249
+ "description": "Claims constraints considered by policy evaluation.",
2250
+ "type": "array",
2251
+ "items": {}
2252
+ },
2253
+ "credentials": {
2254
+ "type": "array",
2255
+ "items": {},
2256
+ "description": "Credential constraints considered by policy evaluation."
2257
+ },
2258
+ "credential_sets": {
2259
+ "description": "Optional credential set constraints.",
2260
+ "type": "array",
2261
+ "items": {}
2262
+ }
2263
+ },
2264
+ "required": [
2265
+ "credentials"
2266
+ ],
2267
+ "additionalProperties": false
2268
+ },
2269
+ "description": "Attestation requirements used for policy enforcement."
2270
+ }
2271
+ },
2272
+ "required": [
2273
+ "policy",
2274
+ "values"
2275
+ ],
2276
+ "additionalProperties": false
2277
+ },
2278
+ {
2279
+ "type": "object",
2280
+ "properties": {
2281
+ "policy": {
2282
+ "type": "string",
2283
+ "const": "none",
2284
+ "description": "No disclosure policy enforcement."
2285
+ }
2286
+ },
2287
+ "required": [
2288
+ "policy"
2289
+ ],
2290
+ "additionalProperties": false
2291
+ },
2292
+ {
2293
+ "type": "object",
2294
+ "properties": {
2295
+ "policy": {
2296
+ "type": "string",
2297
+ "const": "allowList",
2298
+ "description": "Allow-list based policy discriminator."
2299
+ },
2300
+ "values": {
2301
+ "type": "array",
2302
+ "items": {
2303
+ "type": "string"
2304
+ },
2305
+ "description": "Allowed values for policy checks."
2306
+ }
2307
+ },
2308
+ "required": [
2309
+ "policy",
2310
+ "values"
2311
+ ],
2312
+ "additionalProperties": false
2313
+ },
2314
+ {
2315
+ "type": "object",
2316
+ "properties": {
2317
+ "policy": {
2318
+ "type": "string",
2319
+ "const": "rootOfTrust",
2320
+ "description": "Root-of-trust policy discriminator."
2321
+ },
2322
+ "values": {
2323
+ "type": "string",
2324
+ "description": "Root-of-trust identifier or reference."
2325
+ }
2326
+ },
2327
+ "required": [
2328
+ "policy",
2329
+ "values"
2330
+ ],
2331
+ "additionalProperties": false
2332
+ }
2333
+ ],
2334
+ "description": "Embedded disclosure policy configuration."
2335
+ },
2336
+ {
2337
+ "type": "null"
2338
+ }
2339
+ ]
2340
+ }
2341
+ },
2342
+ "required": [
2343
+ "id",
2344
+ "config",
2345
+ "fields"
2346
+ ],
2347
+ "additionalProperties": false,
2348
+ "description": "Payload for creating credential issuance configuration.",
2349
+ "$defs": {
2350
+ "__schema0": {
2351
+ "type": "object",
2352
+ "properties": {
2353
+ "path": {
2354
+ "type": "array",
2355
+ "items": {
2356
+ "type": [
2357
+ "string",
2358
+ "number",
2359
+ "null"
2360
+ ]
2361
+ },
2362
+ "description": "Path to this claim inside the credential payload."
2363
+ },
2364
+ "type": {
2365
+ "type": "string",
2366
+ "enum": [
2367
+ "string",
2368
+ "number",
2369
+ "integer",
2370
+ "boolean",
2371
+ "object",
2372
+ "array"
2373
+ ],
2374
+ "description": "Data type of the claim value."
2375
+ },
2376
+ "defaultValue": {
2377
+ "description": "Optional default value for this field."
2378
+ },
2379
+ "mandatory": {
2380
+ "description": "Whether the field is required at issuance time.",
2381
+ "type": "boolean"
2382
+ },
2383
+ "disclosable": {
2384
+ "description": "Whether the claim is selectively disclosable.",
2385
+ "type": "boolean"
2386
+ },
2387
+ "namespace": {
2388
+ "description": "Optional namespace for claim grouping.",
2389
+ "type": "string"
2390
+ },
2391
+ "display": {
2392
+ "description": "Localized display metadata for this field.",
2393
+ "type": "array",
2394
+ "items": {
2395
+ "type": "object",
2396
+ "properties": {
2397
+ "locale": {
2398
+ "type": "string",
2399
+ "minLength": 1,
2400
+ "description": "Locale tag for the display entry."
2401
+ },
2402
+ "name": {
2403
+ "type": "string",
2404
+ "minLength": 1,
2405
+ "description": "Human-readable field name."
2406
+ },
2407
+ "description": {
2408
+ "description": "Optional field description for this locale.",
2409
+ "type": "string"
2410
+ }
2411
+ },
2412
+ "required": [
2413
+ "locale",
2414
+ "name"
2415
+ ],
2416
+ "additionalProperties": false
2417
+ }
2418
+ },
2419
+ "constraints": {
2420
+ "description": "Optional JSON Schema 2020-12 validation keywords for the claim value. Only the JSON Schema keywords listed under Constraints in the claims documentation are accepted (validation keywords such as pattern, minLength or enum, subschemas such as items or properties, and annotations); other keys, such as format or $ref, are refused.",
2421
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2422
+ },
2423
+ "children": {
2424
+ "description": "Nested child claim definitions for object or array fields.",
2425
+ "type": "array",
2426
+ "items": {
2427
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/__schema0"
2428
+ }
2429
+ }
2430
+ },
2431
+ "required": [
2432
+ "path",
2433
+ "type"
2434
+ ],
2435
+ "additionalProperties": false
2436
+ },
2437
+ "ClaimConstraints": {
2438
+ "type": "object",
2439
+ "properties": {
2440
+ "type": {},
2441
+ "enum": {},
2442
+ "const": {},
2443
+ "multipleOf": {},
2444
+ "maximum": {},
2445
+ "exclusiveMaximum": {},
2446
+ "minimum": {},
2447
+ "exclusiveMinimum": {},
2448
+ "maxLength": {},
2449
+ "minLength": {},
2450
+ "pattern": {},
2451
+ "maxItems": {},
2452
+ "minItems": {},
2453
+ "uniqueItems": {},
2454
+ "maxContains": {},
2455
+ "minContains": {},
2456
+ "maxProperties": {},
2457
+ "minProperties": {},
2458
+ "required": {},
2459
+ "dependentRequired": {},
2460
+ "title": {},
2461
+ "description": {},
2462
+ "default": {},
2463
+ "examples": {},
2464
+ "deprecated": {},
2465
+ "readOnly": {},
2466
+ "writeOnly": {},
2467
+ "$comment": {},
2468
+ "items": {
2469
+ "anyOf": [
2470
+ {
2471
+ "type": "boolean"
2472
+ },
2473
+ {
2474
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2475
+ }
2476
+ ]
2477
+ },
2478
+ "contains": {
2479
+ "anyOf": [
2480
+ {
2481
+ "type": "boolean"
2482
+ },
2483
+ {
2484
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2485
+ }
2486
+ ]
2487
+ },
2488
+ "additionalProperties": {
2489
+ "anyOf": [
2490
+ {
2491
+ "type": "boolean"
2492
+ },
2493
+ {
2494
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2495
+ }
2496
+ ]
2497
+ },
2498
+ "propertyNames": {
2499
+ "anyOf": [
2500
+ {
2501
+ "type": "boolean"
2502
+ },
2503
+ {
2504
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2505
+ }
2506
+ ]
2507
+ },
2508
+ "not": {
2509
+ "anyOf": [
2510
+ {
2511
+ "type": "boolean"
2512
+ },
2513
+ {
2514
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2515
+ }
2516
+ ]
2517
+ },
2518
+ "if": {
2519
+ "anyOf": [
2520
+ {
2521
+ "type": "boolean"
2522
+ },
2523
+ {
2524
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2525
+ }
2526
+ ]
2527
+ },
2528
+ "then": {
2529
+ "anyOf": [
2530
+ {
2531
+ "type": "boolean"
2532
+ },
2533
+ {
2534
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2535
+ }
2536
+ ]
2537
+ },
2538
+ "else": {
2539
+ "anyOf": [
2540
+ {
2541
+ "type": "boolean"
2542
+ },
2543
+ {
2544
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2545
+ }
2546
+ ]
2547
+ },
2548
+ "unevaluatedItems": {
2549
+ "anyOf": [
2550
+ {
2551
+ "type": "boolean"
2552
+ },
2553
+ {
2554
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2555
+ }
2556
+ ]
2557
+ },
2558
+ "unevaluatedProperties": {
2559
+ "anyOf": [
2560
+ {
2561
+ "type": "boolean"
2562
+ },
2563
+ {
2564
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2565
+ }
2566
+ ]
2567
+ },
2568
+ "prefixItems": {
2569
+ "type": "array",
2570
+ "items": {
2571
+ "anyOf": [
2572
+ {
2573
+ "type": "boolean"
2574
+ },
2575
+ {
2576
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2577
+ }
2578
+ ]
2579
+ }
2580
+ },
2581
+ "allOf": {
2582
+ "type": "array",
2583
+ "items": {
2584
+ "anyOf": [
2585
+ {
2586
+ "type": "boolean"
2587
+ },
2588
+ {
2589
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2590
+ }
2591
+ ]
2592
+ }
2593
+ },
2594
+ "anyOf": {
2595
+ "type": "array",
2596
+ "items": {
2597
+ "anyOf": [
2598
+ {
2599
+ "type": "boolean"
2600
+ },
2601
+ {
2602
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2603
+ }
2604
+ ]
2605
+ }
2606
+ },
2607
+ "oneOf": {
2608
+ "type": "array",
2609
+ "items": {
2610
+ "anyOf": [
2611
+ {
2612
+ "type": "boolean"
2613
+ },
2614
+ {
2615
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2616
+ }
2617
+ ]
2618
+ }
2619
+ },
2620
+ "properties": {
2621
+ "type": "object",
2622
+ "propertyNames": {
2623
+ "type": "string"
2624
+ },
2625
+ "additionalProperties": {
2626
+ "anyOf": [
2627
+ {
2628
+ "type": "boolean"
2629
+ },
2630
+ {
2631
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2632
+ }
2633
+ ]
2634
+ }
2635
+ },
2636
+ "patternProperties": {
2637
+ "type": "object",
2638
+ "propertyNames": {
2639
+ "type": "string"
2640
+ },
2641
+ "additionalProperties": {
2642
+ "anyOf": [
2643
+ {
2644
+ "type": "boolean"
2645
+ },
2646
+ {
2647
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2648
+ }
2649
+ ]
2650
+ }
2651
+ },
2652
+ "dependentSchemas": {
2653
+ "type": "object",
2654
+ "propertyNames": {
2655
+ "type": "string"
2656
+ },
2657
+ "additionalProperties": {
2658
+ "anyOf": [
2659
+ {
2660
+ "type": "boolean"
2661
+ },
2662
+ {
2663
+ "$ref": "#/$defs/CredentialConfigCreate/$defs/ClaimConstraints"
2664
+ }
2665
+ ]
2666
+ }
2667
+ }
2668
+ },
2669
+ "additionalProperties": false
2670
+ }
2671
+ },
2672
+ "title": "CredentialConfigCreate"
2673
+ }
2674
+ }
853
2675
  }
854
2676
  ]
855
2677
  }