@eudiplo/cli 8.1.0-main.a6a67b3 → 8.1.0-main.a83e1b5

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.
package/dist/index.js CHANGED
@@ -14887,7 +14887,7 @@ var CONFIG_FORMATS = {
14887
14887
  IssuanceConfig: {
14888
14888
  slug: "issuance-config",
14889
14889
  file: "IssuanceConfigFile",
14890
- version: 1
14890
+ version: 2
14891
14891
  },
14892
14892
  CredentialConfig: {
14893
14893
  slug: "credential-config",
@@ -14897,7 +14897,7 @@ var CONFIG_FORMATS = {
14897
14897
  PresentationConfig: {
14898
14898
  slug: "presentation-config",
14899
14899
  file: "PresentationConfigFile",
14900
- version: 1
14900
+ version: 2
14901
14901
  },
14902
14902
  AttributeProvider: {
14903
14903
  slug: "attribute-provider",
@@ -14936,7 +14936,42 @@ function resourceId(input) {
14936
14936
  throw new Error(`Configuration spec.${field} is required`);
14937
14937
  return id;
14938
14938
  }
14939
- var CONFIG_MIGRATIONS = [];
14939
+ var presentationConfigV1ToV2 = {
14940
+ id: "presentation-config-v2-provides-attestations",
14941
+ kind: "PresentationConfig",
14942
+ from: 1,
14943
+ to: 2,
14944
+ migrate(spec) {
14945
+ const registrationCert = spec.registration_cert;
14946
+ if (!object(registrationCert) || !object(registrationCert.body) || !("provided_attestations" in registrationCert.body)) {
14947
+ return { spec };
14948
+ }
14949
+ const { provided_attestations: _, ...body } = registrationCert.body;
14950
+ return {
14951
+ spec: { ...spec, registration_cert: { ...registrationCert, body } },
14952
+ issues: [
14953
+ {
14954
+ severity: "warning",
14955
+ code: "PROVIDED_ATTESTATIONS_REMOVED",
14956
+ path: "/spec/registration_cert/body/provided_attestations",
14957
+ message: "provided_attestations is not part of the registrar API and was removed. Set provides_attestations to the credential type identifiers (SD-JWT VC vct or mdoc doctype) the issuer provides."
14958
+ }
14959
+ ]
14960
+ };
14961
+ }
14962
+ };
14963
+ var CONFIG_MIGRATIONS = [
14964
+ {
14965
+ id: "issuance-config-v2-offer-lifetime",
14966
+ kind: "IssuanceConfig",
14967
+ from: 1,
14968
+ to: 2,
14969
+ // v2 only adds the optional offerLifetimeSeconds: a v1 spec is a
14970
+ // valid v2 spec whose offers keep having no lifetime.
14971
+ migrate: (spec) => ({ spec })
14972
+ },
14973
+ presentationConfigV1ToV2
14974
+ ];
14940
14975
  function schemaUrl(kind, version = CONFIG_FORMATS[kind].version) {
14941
14976
  if (!Number.isSafeInteger(version) || version < 1)
14942
14977
  throw new Error("Invalid config version");
@@ -20001,6 +20036,1400 @@ var CONFIG_SCHEMAS = [
20001
20036
  "title": "CreateWebhookEndpointDto"
20002
20037
  }
20003
20038
  }
20039
+ },
20040
+ {
20041
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
20042
+ "$id": "https://eudiplo.dev/schemas/v2/IssuanceConfigFile.schema.json",
20043
+ "title": "IssuanceConfigFile",
20044
+ "type": "object",
20045
+ "properties": {
20046
+ "$schema": {
20047
+ "type": "string",
20048
+ "const": "https://eudiplo.dev/schemas/v2/IssuanceConfigFile.schema.json"
20049
+ },
20050
+ "metadata": {
20051
+ "type": "object",
20052
+ "properties": {
20053
+ "generation": {
20054
+ "type": "integer",
20055
+ "minimum": 1,
20056
+ "description": "Monotonically increasing configuration generation."
20057
+ },
20058
+ "ownership": {
20059
+ "type": "string",
20060
+ "enum": [
20061
+ "unmanaged",
20062
+ "file-managed"
20063
+ ],
20064
+ "description": "Requested ownership recorded when the document is applied."
20065
+ }
20066
+ },
20067
+ "additionalProperties": false
20068
+ },
20069
+ "spec": {
20070
+ "$ref": "#/$defs/IssuanceConfig"
20071
+ }
20072
+ },
20073
+ "required": [
20074
+ "$schema",
20075
+ "spec"
20076
+ ],
20077
+ "additionalProperties": false,
20078
+ "$defs": {
20079
+ "IssuanceConfig": {
20080
+ "type": "object",
20081
+ "properties": {
20082
+ "batchSize": {
20083
+ "description": "Optional issuance batch size.",
20084
+ "type": "integer",
20085
+ "minimum": 1,
20086
+ "maximum": 9007199254740991
20087
+ },
20088
+ "dPopRequired": {
20089
+ "description": "Require DPoP proofs for issuance endpoints.",
20090
+ "type": "boolean"
20091
+ },
20092
+ "walletAttestationRequired": {
20093
+ "description": "Default wallet attestation requirement for managed authorization servers.",
20094
+ "type": "boolean"
20095
+ },
20096
+ "walletProviderTrustLists": {
20097
+ "description": "Shared wallet provider trust lists for key attestations and default authorization server wallet authentication.",
20098
+ "type": "array",
20099
+ "items": {
20100
+ "type": "object",
20101
+ "properties": {
20102
+ "trustListId": {
20103
+ "type": "string",
20104
+ "minLength": 1
20105
+ },
20106
+ "url": {
20107
+ "description": "URL of the wallet provider trust list.",
20108
+ "type": "string",
20109
+ "format": "uri"
20110
+ },
20111
+ "verifierKey": {
20112
+ "description": "Optional verifier key material used for trust list verification.",
20113
+ "type": "object",
20114
+ "propertyNames": {
20115
+ "type": "string"
20116
+ },
20117
+ "additionalProperties": {}
20118
+ },
20119
+ "verifierX509Der": {
20120
+ "description": "Optional verifier certificate in DER/base64 form.",
20121
+ "type": "string"
20122
+ }
20123
+ },
20124
+ "additionalProperties": false
20125
+ }
20126
+ },
20127
+ "signingKeyId": {
20128
+ "description": "Default signing key chain id for credential issuance.",
20129
+ "type": "string",
20130
+ "minLength": 1
20131
+ },
20132
+ "authorizationServers": {
20133
+ "minItems": 1,
20134
+ "type": "array",
20135
+ "items": {
20136
+ "oneOf": [
20137
+ {
20138
+ "type": "object",
20139
+ "properties": {
20140
+ "type": {
20141
+ "type": "string",
20142
+ "const": "external",
20143
+ "description": "Use an externally managed authorization server."
20144
+ },
20145
+ "id": {
20146
+ "type": "string",
20147
+ "minLength": 1,
20148
+ "description": "Authorization server identifier."
20149
+ },
20150
+ "issuer": {
20151
+ "type": "string",
20152
+ "format": "uri",
20153
+ "description": "Issuer URL for the external authorization server."
20154
+ },
20155
+ "sessionBinding": {
20156
+ "description": "Explicit mapping from an external access-token claim to an existing issuance session.",
20157
+ "type": "object",
20158
+ "properties": {
20159
+ "method": {
20160
+ "type": "string",
20161
+ "const": "access_token_claim",
20162
+ "description": "Read the correlation value from a configured access-token claim."
20163
+ },
20164
+ "claim": {
20165
+ "type": "string",
20166
+ "minLength": 1,
20167
+ "description": "Claim name that contains the issuance-session correlation value."
20168
+ }
20169
+ },
20170
+ "required": [
20171
+ "method",
20172
+ "claim"
20173
+ ],
20174
+ "additionalProperties": false
20175
+ },
20176
+ "label": {
20177
+ "description": "Optional display label for UI selection.",
20178
+ "type": "string"
20179
+ },
20180
+ "enabled": {
20181
+ "description": "Whether this authorization server entry is enabled.",
20182
+ "type": "boolean"
20183
+ }
20184
+ },
20185
+ "required": [
20186
+ "type",
20187
+ "id",
20188
+ "issuer"
20189
+ ],
20190
+ "additionalProperties": false
20191
+ },
20192
+ {
20193
+ "type": "object",
20194
+ "properties": {
20195
+ "type": {
20196
+ "type": "string",
20197
+ "const": "oid4vp",
20198
+ "description": "Use OID4VP-based authorization server chaining."
20199
+ },
20200
+ "id": {
20201
+ "type": "string",
20202
+ "minLength": 1,
20203
+ "description": "Authorization server identifier."
20204
+ },
20205
+ "presentationConfigId": {
20206
+ "type": "string",
20207
+ "minLength": 1,
20208
+ "description": "Presentation configuration id used during authorization."
20209
+ },
20210
+ "immediateWalletRedirect": {
20211
+ "description": "Redirect wallets immediately after authorization response creation.",
20212
+ "type": "boolean"
20213
+ },
20214
+ "token": {
20215
+ "description": "Optional token issuance settings.",
20216
+ "type": "object",
20217
+ "properties": {
20218
+ "lifetimeSeconds": {
20219
+ "description": "Access token lifetime in seconds.",
20220
+ "type": "number",
20221
+ "minimum": 60
20222
+ },
20223
+ "signingKeyId": {
20224
+ "description": "Optional key chain id used to sign issued tokens.",
20225
+ "type": "string",
20226
+ "minLength": 1
20227
+ },
20228
+ "refreshTokenEnabled": {
20229
+ "description": "Enable issuing refresh tokens.",
20230
+ "type": "boolean"
20231
+ },
20232
+ "refreshTokenExpiresInSeconds": {
20233
+ "description": "Refresh token lifetime in seconds.",
20234
+ "type": "number",
20235
+ "minimum": 60
20236
+ }
20237
+ },
20238
+ "additionalProperties": false
20239
+ },
20240
+ "requireDPoP": {
20241
+ "description": "Require DPoP proofs for token/credential requests.",
20242
+ "type": "boolean"
20243
+ },
20244
+ "walletAttestationRequired": {
20245
+ "description": "Require wallet attestation for this authorization server.",
20246
+ "type": "boolean"
20247
+ },
20248
+ "walletProviderTrustLists": {
20249
+ "description": "Optional wallet provider trust list references for this authorization server.",
20250
+ "type": "array",
20251
+ "items": {
20252
+ "type": "object",
20253
+ "properties": {
20254
+ "trustListId": {
20255
+ "type": "string",
20256
+ "minLength": 1
20257
+ },
20258
+ "url": {
20259
+ "description": "URL of the wallet provider trust list.",
20260
+ "type": "string",
20261
+ "format": "uri"
20262
+ },
20263
+ "verifierKey": {
20264
+ "description": "Optional verifier key material used for trust list verification.",
20265
+ "type": "object",
20266
+ "propertyNames": {
20267
+ "type": "string"
20268
+ },
20269
+ "additionalProperties": {}
20270
+ },
20271
+ "verifierX509Der": {
20272
+ "description": "Optional verifier certificate in DER/base64 form.",
20273
+ "type": "string"
20274
+ }
20275
+ },
20276
+ "additionalProperties": false
20277
+ }
20278
+ },
20279
+ "label": {
20280
+ "description": "Optional display label for UI selection.",
20281
+ "type": "string"
20282
+ },
20283
+ "enabled": {
20284
+ "description": "Whether this authorization server entry is enabled.",
20285
+ "type": "boolean"
20286
+ }
20287
+ },
20288
+ "required": [
20289
+ "type",
20290
+ "id",
20291
+ "presentationConfigId"
20292
+ ],
20293
+ "additionalProperties": false
20294
+ },
20295
+ {
20296
+ "type": "object",
20297
+ "properties": {
20298
+ "type": {
20299
+ "type": "string",
20300
+ "const": "chained",
20301
+ "description": "Use upstream OIDC as authorization source."
20302
+ },
20303
+ "id": {
20304
+ "type": "string",
20305
+ "minLength": 1,
20306
+ "description": "Authorization server identifier."
20307
+ },
20308
+ "upstream": {
20309
+ "type": "object",
20310
+ "properties": {
20311
+ "issuer": {
20312
+ "type": "string",
20313
+ "format": "uri",
20314
+ "description": "Upstream OIDC issuer URL."
20315
+ },
20316
+ "clientId": {
20317
+ "type": "string",
20318
+ "minLength": 1,
20319
+ "description": "Client id for upstream OIDC authentication."
20320
+ },
20321
+ "clientSecret": {
20322
+ "description": "Optional client secret for upstream OIDC authentication.",
20323
+ "type": "string",
20324
+ "minLength": 1
20325
+ },
20326
+ "scopes": {
20327
+ "description": "Optional scopes requested from the upstream issuer.",
20328
+ "type": "array",
20329
+ "items": {
20330
+ "type": "string",
20331
+ "minLength": 1
20332
+ }
20333
+ }
20334
+ },
20335
+ "required": [
20336
+ "issuer",
20337
+ "clientId"
20338
+ ],
20339
+ "additionalProperties": false,
20340
+ "description": "Upstream OIDC connection settings."
20341
+ },
20342
+ "token": {
20343
+ "description": "Optional token issuance settings.",
20344
+ "type": "object",
20345
+ "properties": {
20346
+ "lifetimeSeconds": {
20347
+ "description": "Access token lifetime in seconds.",
20348
+ "type": "number",
20349
+ "minimum": 60
20350
+ },
20351
+ "signingKeyId": {
20352
+ "description": "Optional key chain id used to sign issued tokens.",
20353
+ "type": "string",
20354
+ "minLength": 1
20355
+ },
20356
+ "refreshTokenEnabled": {
20357
+ "description": "Enable issuing refresh tokens.",
20358
+ "type": "boolean"
20359
+ },
20360
+ "refreshTokenExpiresInSeconds": {
20361
+ "description": "Refresh token lifetime in seconds.",
20362
+ "type": "number",
20363
+ "minimum": 60
20364
+ }
20365
+ },
20366
+ "additionalProperties": false
20367
+ },
20368
+ "requireDPoP": {
20369
+ "description": "Require DPoP proofs for token/credential requests.",
20370
+ "type": "boolean"
20371
+ },
20372
+ "walletAttestationRequired": {
20373
+ "description": "Require wallet attestation for this authorization server.",
20374
+ "type": "boolean"
20375
+ },
20376
+ "walletProviderTrustLists": {
20377
+ "description": "Optional wallet provider trust list references for this authorization server.",
20378
+ "type": "array",
20379
+ "items": {
20380
+ "type": "object",
20381
+ "properties": {
20382
+ "trustListId": {
20383
+ "type": "string",
20384
+ "minLength": 1
20385
+ },
20386
+ "url": {
20387
+ "description": "URL of the wallet provider trust list.",
20388
+ "type": "string",
20389
+ "format": "uri"
20390
+ },
20391
+ "verifierKey": {
20392
+ "description": "Optional verifier key material used for trust list verification.",
20393
+ "type": "object",
20394
+ "propertyNames": {
20395
+ "type": "string"
20396
+ },
20397
+ "additionalProperties": {}
20398
+ },
20399
+ "verifierX509Der": {
20400
+ "description": "Optional verifier certificate in DER/base64 form.",
20401
+ "type": "string"
20402
+ }
20403
+ },
20404
+ "additionalProperties": false
20405
+ }
20406
+ },
20407
+ "label": {
20408
+ "description": "Optional display label for UI selection.",
20409
+ "type": "string"
20410
+ },
20411
+ "enabled": {
20412
+ "description": "Whether this authorization server entry is enabled.",
20413
+ "type": "boolean"
20414
+ }
20415
+ },
20416
+ "required": [
20417
+ "type",
20418
+ "id",
20419
+ "upstream"
20420
+ ],
20421
+ "additionalProperties": false
20422
+ },
20423
+ {
20424
+ "type": "object",
20425
+ "properties": {
20426
+ "type": {
20427
+ "type": "string",
20428
+ "const": "built-in",
20429
+ "description": "Use EUDIPLO built-in authorization server."
20430
+ },
20431
+ "id": {
20432
+ "type": "string",
20433
+ "minLength": 1,
20434
+ "description": "Authorization server identifier."
20435
+ },
20436
+ "token": {
20437
+ "description": "Optional token issuance settings.",
20438
+ "type": "object",
20439
+ "properties": {
20440
+ "lifetimeSeconds": {
20441
+ "description": "Access token lifetime in seconds.",
20442
+ "type": "number",
20443
+ "minimum": 60
20444
+ },
20445
+ "signingKeyId": {
20446
+ "description": "Optional key chain id used to sign issued tokens.",
20447
+ "type": "string",
20448
+ "minLength": 1
20449
+ },
20450
+ "refreshTokenEnabled": {
20451
+ "description": "Enable issuing refresh tokens.",
20452
+ "type": "boolean"
20453
+ },
20454
+ "refreshTokenExpiresInSeconds": {
20455
+ "description": "Refresh token lifetime in seconds.",
20456
+ "type": "number",
20457
+ "minimum": 60
20458
+ }
20459
+ },
20460
+ "additionalProperties": false
20461
+ },
20462
+ "requireDPoP": {
20463
+ "description": "Require DPoP proofs for token/credential requests.",
20464
+ "type": "boolean"
20465
+ },
20466
+ "walletAttestationRequired": {
20467
+ "description": "Require wallet attestation for this authorization server.",
20468
+ "type": "boolean"
20469
+ },
20470
+ "walletProviderTrustLists": {
20471
+ "description": "Optional wallet provider trust list references for this authorization server.",
20472
+ "type": "array",
20473
+ "items": {
20474
+ "type": "object",
20475
+ "properties": {
20476
+ "trustListId": {
20477
+ "type": "string",
20478
+ "minLength": 1
20479
+ },
20480
+ "url": {
20481
+ "description": "URL of the wallet provider trust list.",
20482
+ "type": "string",
20483
+ "format": "uri"
20484
+ },
20485
+ "verifierKey": {
20486
+ "description": "Optional verifier key material used for trust list verification.",
20487
+ "type": "object",
20488
+ "propertyNames": {
20489
+ "type": "string"
20490
+ },
20491
+ "additionalProperties": {}
20492
+ },
20493
+ "verifierX509Der": {
20494
+ "description": "Optional verifier certificate in DER/base64 form.",
20495
+ "type": "string"
20496
+ }
20497
+ },
20498
+ "additionalProperties": false
20499
+ }
20500
+ },
20501
+ "label": {
20502
+ "description": "Optional display label for UI selection.",
20503
+ "type": "string"
20504
+ },
20505
+ "enabled": {
20506
+ "description": "Whether this authorization server entry is enabled.",
20507
+ "type": "boolean"
20508
+ }
20509
+ },
20510
+ "required": [
20511
+ "type",
20512
+ "id"
20513
+ ],
20514
+ "additionalProperties": false
20515
+ }
20516
+ ],
20517
+ "description": "Supported authorization server configurations."
20518
+ },
20519
+ "description": "Configured authorization server entries."
20520
+ },
20521
+ "federation": {
20522
+ "description": "Optional OpenID Federation settings.",
20523
+ "anyOf": [
20524
+ {
20525
+ "type": "object",
20526
+ "properties": {
20527
+ "role": {
20528
+ "description": "Federation role for this issuer.",
20529
+ "type": "string",
20530
+ "enum": [
20531
+ "trust_anchor",
20532
+ "intermediate",
20533
+ "leaf"
20534
+ ]
20535
+ },
20536
+ "mode": {
20537
+ "description": "Federation operation mode.",
20538
+ "type": "string",
20539
+ "enum": [
20540
+ "federation-only",
20541
+ "hybrid"
20542
+ ]
20543
+ },
20544
+ "entityId": {
20545
+ "description": "Optional local federation entity id.",
20546
+ "type": "string"
20547
+ },
20548
+ "enforceSigningPolicy": {
20549
+ "description": "Enforce strict signing policy checks.",
20550
+ "type": "boolean"
20551
+ },
20552
+ "cacheTtlSeconds": {
20553
+ "description": "Cache time-to-live for federation metadata in seconds.",
20554
+ "type": "integer",
20555
+ "minimum": 1,
20556
+ "maximum": 9007199254740991
20557
+ },
20558
+ "trustAnchors": {
20559
+ "type": "array",
20560
+ "items": {
20561
+ "type": "object",
20562
+ "properties": {
20563
+ "entityId": {
20564
+ "type": "string",
20565
+ "minLength": 1,
20566
+ "description": "Federation trust anchor entity id."
20567
+ },
20568
+ "entityConfigurationUri": {
20569
+ "type": "string",
20570
+ "format": "uri",
20571
+ "description": "Entity configuration URI for the trust anchor."
20572
+ }
20573
+ },
20574
+ "required": [
20575
+ "entityId",
20576
+ "entityConfigurationUri"
20577
+ ],
20578
+ "additionalProperties": false
20579
+ },
20580
+ "description": "Federation trust anchors."
20581
+ }
20582
+ },
20583
+ "required": [
20584
+ "trustAnchors"
20585
+ ],
20586
+ "additionalProperties": false
20587
+ },
20588
+ {
20589
+ "type": "null"
20590
+ }
20591
+ ]
20592
+ },
20593
+ "registrationCertificate": {
20594
+ "description": "Optional registration certificate settings.",
20595
+ "anyOf": [
20596
+ {
20597
+ "type": "object",
20598
+ "properties": {
20599
+ "enabled": {
20600
+ "description": "Enable issuer registration certificate support.",
20601
+ "type": "boolean"
20602
+ },
20603
+ "mode": {
20604
+ "description": "How registration certificate data is provided.",
20605
+ "type": "string",
20606
+ "enum": [
20607
+ "import",
20608
+ "generate"
20609
+ ]
20610
+ },
20611
+ "jwt": {
20612
+ "description": "Optional registration certificate JWT when using import mode.",
20613
+ "type": "string"
20614
+ },
20615
+ "privacyPolicy": {
20616
+ "description": "Optional privacy policy URI.",
20617
+ "type": "string"
20618
+ },
20619
+ "supportUri": {
20620
+ "description": "Optional support URI.",
20621
+ "type": "string"
20622
+ }
20623
+ },
20624
+ "additionalProperties": false
20625
+ },
20626
+ {
20627
+ "type": "null"
20628
+ }
20629
+ ]
20630
+ },
20631
+ "display": {
20632
+ "description": "Localized issuer metadata shown to wallets.",
20633
+ "type": "array",
20634
+ "items": {
20635
+ "type": "object",
20636
+ "properties": {
20637
+ "name": {
20638
+ "description": "Issuer display name.",
20639
+ "type": "string"
20640
+ },
20641
+ "locale": {
20642
+ "description": "Locale tag for this display entry.",
20643
+ "type": "string"
20644
+ },
20645
+ "logo": {
20646
+ "description": "Optional issuer logo metadata.",
20647
+ "type": "object",
20648
+ "properties": {
20649
+ "uri": {
20650
+ "type": "string",
20651
+ "minLength": 1,
20652
+ "description": "Logo URI."
20653
+ },
20654
+ "alt_text": {
20655
+ "description": "Optional localized alternative text.",
20656
+ "type": "string"
20657
+ }
20658
+ },
20659
+ "required": [
20660
+ "uri"
20661
+ ],
20662
+ "additionalProperties": {}
20663
+ }
20664
+ },
20665
+ "additionalProperties": {}
20666
+ }
20667
+ },
20668
+ "notificationEndpointEnabled": {
20669
+ "description": "Whether the OID4VCI notification endpoint is exposed for this issuance configuration.",
20670
+ "type": "boolean"
20671
+ },
20672
+ "credentialResponseEncryption": {
20673
+ "description": "Enable encrypted credential responses.",
20674
+ "type": "boolean"
20675
+ },
20676
+ "credentialRequestEncryption": {
20677
+ "description": "Require encrypted credential requests.",
20678
+ "type": "boolean"
20679
+ },
20680
+ "txCodeMaxAttempts": {
20681
+ "description": "Maximum verification attempts for transaction codes. Null resets to defaults.",
20682
+ "anyOf": [
20683
+ {
20684
+ "type": "integer",
20685
+ "minimum": 1,
20686
+ "maximum": 9007199254740991
20687
+ },
20688
+ {
20689
+ "type": "null"
20690
+ }
20691
+ ]
20692
+ },
20693
+ "offerLifetimeSeconds": {
20694
+ "description": "Default lifetime of credential offers in seconds. Can be overridden per offer request. Null or unset: offers do not expire.",
20695
+ "anyOf": [
20696
+ {
20697
+ "type": "integer",
20698
+ "minimum": 1,
20699
+ "maximum": 9007199254740991
20700
+ },
20701
+ {
20702
+ "type": "null"
20703
+ }
20704
+ ]
20705
+ }
20706
+ },
20707
+ "required": [
20708
+ "authorizationServers"
20709
+ ],
20710
+ "additionalProperties": false,
20711
+ "title": "IssuanceConfig"
20712
+ }
20713
+ }
20714
+ },
20715
+ {
20716
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
20717
+ "$id": "https://eudiplo.dev/schemas/v2/PresentationConfigFile.schema.json",
20718
+ "title": "PresentationConfigFile",
20719
+ "type": "object",
20720
+ "properties": {
20721
+ "$schema": {
20722
+ "type": "string",
20723
+ "const": "https://eudiplo.dev/schemas/v2/PresentationConfigFile.schema.json"
20724
+ },
20725
+ "metadata": {
20726
+ "type": "object",
20727
+ "properties": {
20728
+ "generation": {
20729
+ "type": "integer",
20730
+ "minimum": 1,
20731
+ "description": "Monotonically increasing configuration generation."
20732
+ },
20733
+ "ownership": {
20734
+ "type": "string",
20735
+ "enum": [
20736
+ "unmanaged",
20737
+ "file-managed"
20738
+ ],
20739
+ "description": "Requested ownership recorded when the document is applied."
20740
+ }
20741
+ },
20742
+ "additionalProperties": false
20743
+ },
20744
+ "spec": {
20745
+ "allOf": [
20746
+ {
20747
+ "$ref": "#/$defs/PresentationConfigCreateDto"
20748
+ },
20749
+ {
20750
+ "type": "object",
20751
+ "required": [
20752
+ "id"
20753
+ ],
20754
+ "properties": {
20755
+ "id": {
20756
+ "type": "string",
20757
+ "minLength": 1
20758
+ }
20759
+ }
20760
+ }
20761
+ ]
20762
+ }
20763
+ },
20764
+ "required": [
20765
+ "$schema",
20766
+ "spec"
20767
+ ],
20768
+ "additionalProperties": false,
20769
+ "$defs": {
20770
+ "PresentationConfigCreateDto": {
20771
+ "type": "object",
20772
+ "properties": {
20773
+ "id": {
20774
+ "type": "string",
20775
+ "minLength": 1,
20776
+ "description": "Presentation configuration identifier."
20777
+ },
20778
+ "description": {
20779
+ "description": "Optional presentation configuration description.",
20780
+ "type": [
20781
+ "string",
20782
+ "null"
20783
+ ]
20784
+ },
20785
+ "lifeTime": {
20786
+ "description": "Presentation request lifetime in seconds.",
20787
+ "type": "integer",
20788
+ "minimum": 1,
20789
+ "maximum": 9007199254740991
20790
+ },
20791
+ "skewSeconds": {
20792
+ "description": "Clock skew tolerance in seconds.",
20793
+ "type": "integer",
20794
+ "minimum": 0,
20795
+ "maximum": 9007199254740991
20796
+ },
20797
+ "statusCheckMode": {
20798
+ "description": "Revocation/status check mode.",
20799
+ "type": "string",
20800
+ "enum": [
20801
+ "strict",
20802
+ "best_effort",
20803
+ "disabled"
20804
+ ]
20805
+ },
20806
+ "dcql_query": {
20807
+ "type": "object",
20808
+ "properties": {
20809
+ "credentials": {
20810
+ "minItems": 1,
20811
+ "type": "array",
20812
+ "items": {
20813
+ "oneOf": [
20814
+ {
20815
+ "type": "object",
20816
+ "properties": {
20817
+ "id": {
20818
+ "type": "string",
20819
+ "minLength": 1,
20820
+ "pattern": "^[A-Za-z0-9_-]+$",
20821
+ "description": "Credential query identifier."
20822
+ },
20823
+ "multiple": {
20824
+ "description": "Allow multiple matching credentials.",
20825
+ "type": "boolean"
20826
+ },
20827
+ "claim_sets": {
20828
+ "description": "Optional claim set constraints.",
20829
+ "type": "array",
20830
+ "items": {
20831
+ "type": "array",
20832
+ "items": {
20833
+ "type": "string"
20834
+ }
20835
+ }
20836
+ },
20837
+ "trusted_authorities": {
20838
+ "description": "Optional trusted authority constraints.",
20839
+ "type": "array",
20840
+ "items": {
20841
+ "oneOf": [
20842
+ {
20843
+ "type": "object",
20844
+ "properties": {
20845
+ "type": {
20846
+ "type": "string",
20847
+ "const": "etsi_tl",
20848
+ "description": "Trusted authority type discriminator for ETSI trust lists."
20849
+ },
20850
+ "values": {
20851
+ "type": "array",
20852
+ "items": {
20853
+ "type": "object",
20854
+ "properties": {
20855
+ "trustListId": {
20856
+ "description": "Optional trust list id reference.",
20857
+ "type": "string"
20858
+ },
20859
+ "url": {
20860
+ "description": "Optional trust list URL reference.",
20861
+ "anyOf": [
20862
+ {
20863
+ "type": "string",
20864
+ "format": "uri"
20865
+ },
20866
+ {
20867
+ "type": "string",
20868
+ "pattern": "^<TENANT_URL>(?:\\/.*)?$"
20869
+ }
20870
+ ]
20871
+ },
20872
+ "verifierKey": {
20873
+ "description": "Optional verifier key material.",
20874
+ "type": "object",
20875
+ "propertyNames": {
20876
+ "type": "string"
20877
+ },
20878
+ "additionalProperties": {}
20879
+ },
20880
+ "verifierX509Der": {
20881
+ "description": "Optional verifier certificate in DER/base64 form.",
20882
+ "type": "string"
20883
+ }
20884
+ },
20885
+ "additionalProperties": false
20886
+ },
20887
+ "description": "Trust list references for ETSI TL verification."
20888
+ }
20889
+ },
20890
+ "required": [
20891
+ "type",
20892
+ "values"
20893
+ ],
20894
+ "additionalProperties": false
20895
+ },
20896
+ {
20897
+ "type": "object",
20898
+ "properties": {
20899
+ "type": {
20900
+ "type": "string",
20901
+ "const": "openid_federation",
20902
+ "description": "Trusted authority type discriminator for OpenID Federation."
20903
+ },
20904
+ "values": {
20905
+ "type": "array",
20906
+ "items": {
20907
+ "type": "string"
20908
+ },
20909
+ "description": "OpenID Federation authority identifiers."
20910
+ }
20911
+ },
20912
+ "required": [
20913
+ "type",
20914
+ "values"
20915
+ ],
20916
+ "additionalProperties": false
20917
+ }
20918
+ ]
20919
+ }
20920
+ },
20921
+ "format": {
20922
+ "type": "string",
20923
+ "const": "dc+sd-jwt",
20924
+ "description": "Credential format discriminator."
20925
+ },
20926
+ "meta": {
20927
+ "type": "object",
20928
+ "properties": {
20929
+ "vct_values": {
20930
+ "minItems": 1,
20931
+ "type": "array",
20932
+ "items": {
20933
+ "type": "string"
20934
+ },
20935
+ "description": "Accepted VCT values."
20936
+ }
20937
+ },
20938
+ "required": [
20939
+ "vct_values"
20940
+ ],
20941
+ "additionalProperties": false
20942
+ },
20943
+ "claims": {
20944
+ "description": "Optional claim-level constraints.",
20945
+ "type": "array",
20946
+ "items": {
20947
+ "type": "object",
20948
+ "properties": {
20949
+ "id": {
20950
+ "description": "Optional claim query id.",
20951
+ "type": "string"
20952
+ },
20953
+ "path": {
20954
+ "type": "array",
20955
+ "items": {
20956
+ "type": [
20957
+ "string",
20958
+ "number"
20959
+ ]
20960
+ },
20961
+ "description": "Path to the claim value in presented credentials."
20962
+ },
20963
+ "values": {
20964
+ "description": "Optional allowed values for the claim.",
20965
+ "type": "array",
20966
+ "items": {
20967
+ "type": "string"
20968
+ }
20969
+ }
20970
+ },
20971
+ "required": [
20972
+ "path"
20973
+ ],
20974
+ "additionalProperties": false
20975
+ }
20976
+ }
20977
+ },
20978
+ "required": [
20979
+ "id",
20980
+ "format",
20981
+ "meta"
20982
+ ],
20983
+ "additionalProperties": false
20984
+ },
20985
+ {
20986
+ "type": "object",
20987
+ "properties": {
20988
+ "id": {
20989
+ "type": "string",
20990
+ "minLength": 1,
20991
+ "pattern": "^[A-Za-z0-9_-]+$",
20992
+ "description": "Credential query identifier."
20993
+ },
20994
+ "multiple": {
20995
+ "description": "Allow multiple matching credentials.",
20996
+ "type": "boolean"
20997
+ },
20998
+ "claim_sets": {
20999
+ "description": "Optional claim set constraints.",
21000
+ "type": "array",
21001
+ "items": {
21002
+ "type": "array",
21003
+ "items": {
21004
+ "type": "string"
21005
+ }
21006
+ }
21007
+ },
21008
+ "trusted_authorities": {
21009
+ "description": "Optional trusted authority constraints.",
21010
+ "type": "array",
21011
+ "items": {
21012
+ "oneOf": [
21013
+ {
21014
+ "type": "object",
21015
+ "properties": {
21016
+ "type": {
21017
+ "type": "string",
21018
+ "const": "etsi_tl",
21019
+ "description": "Trusted authority type discriminator for ETSI trust lists."
21020
+ },
21021
+ "values": {
21022
+ "type": "array",
21023
+ "items": {
21024
+ "type": "object",
21025
+ "properties": {
21026
+ "trustListId": {
21027
+ "description": "Optional trust list id reference.",
21028
+ "type": "string"
21029
+ },
21030
+ "url": {
21031
+ "description": "Optional trust list URL reference.",
21032
+ "anyOf": [
21033
+ {
21034
+ "type": "string",
21035
+ "format": "uri"
21036
+ },
21037
+ {
21038
+ "type": "string",
21039
+ "pattern": "^<TENANT_URL>(?:\\/.*)?$"
21040
+ }
21041
+ ]
21042
+ },
21043
+ "verifierKey": {
21044
+ "description": "Optional verifier key material.",
21045
+ "type": "object",
21046
+ "propertyNames": {
21047
+ "type": "string"
21048
+ },
21049
+ "additionalProperties": {}
21050
+ },
21051
+ "verifierX509Der": {
21052
+ "description": "Optional verifier certificate in DER/base64 form.",
21053
+ "type": "string"
21054
+ }
21055
+ },
21056
+ "additionalProperties": false
21057
+ },
21058
+ "description": "Trust list references for ETSI TL verification."
21059
+ }
21060
+ },
21061
+ "required": [
21062
+ "type",
21063
+ "values"
21064
+ ],
21065
+ "additionalProperties": false
21066
+ },
21067
+ {
21068
+ "type": "object",
21069
+ "properties": {
21070
+ "type": {
21071
+ "type": "string",
21072
+ "const": "openid_federation",
21073
+ "description": "Trusted authority type discriminator for OpenID Federation."
21074
+ },
21075
+ "values": {
21076
+ "type": "array",
21077
+ "items": {
21078
+ "type": "string"
21079
+ },
21080
+ "description": "OpenID Federation authority identifiers."
21081
+ }
21082
+ },
21083
+ "required": [
21084
+ "type",
21085
+ "values"
21086
+ ],
21087
+ "additionalProperties": false
21088
+ }
21089
+ ]
21090
+ }
21091
+ },
21092
+ "format": {
21093
+ "type": "string",
21094
+ "const": "mso_mdoc",
21095
+ "description": "Credential format discriminator."
21096
+ },
21097
+ "meta": {
21098
+ "type": "object",
21099
+ "properties": {
21100
+ "doctype_value": {
21101
+ "type": "string",
21102
+ "minLength": 1,
21103
+ "description": "Expected mDoc doctype value."
21104
+ }
21105
+ },
21106
+ "required": [
21107
+ "doctype_value"
21108
+ ],
21109
+ "additionalProperties": false
21110
+ },
21111
+ "claims": {
21112
+ "description": "Optional mDoc claim-level constraints.",
21113
+ "type": "array",
21114
+ "items": {
21115
+ "type": "object",
21116
+ "properties": {
21117
+ "id": {
21118
+ "description": "Optional claim query id.",
21119
+ "type": "string"
21120
+ },
21121
+ "path": {
21122
+ "type": "array",
21123
+ "items": {
21124
+ "type": [
21125
+ "string",
21126
+ "number"
21127
+ ]
21128
+ },
21129
+ "description": "Path to the claim value in presented credentials."
21130
+ },
21131
+ "values": {
21132
+ "description": "Optional allowed values for the claim.",
21133
+ "type": "array",
21134
+ "items": {
21135
+ "type": "string"
21136
+ }
21137
+ },
21138
+ "intent_to_retain": {
21139
+ "description": "Whether relying party intends to retain the claim.",
21140
+ "type": "boolean"
21141
+ }
21142
+ },
21143
+ "required": [
21144
+ "path"
21145
+ ],
21146
+ "additionalProperties": false
21147
+ }
21148
+ }
21149
+ },
21150
+ "required": [
21151
+ "id",
21152
+ "format",
21153
+ "meta"
21154
+ ],
21155
+ "additionalProperties": false
21156
+ }
21157
+ ]
21158
+ },
21159
+ "description": "Credential queries requested by the verifier."
21160
+ },
21161
+ "credential_sets": {
21162
+ "description": "Optional higher-level credential set requirements.",
21163
+ "type": "array",
21164
+ "items": {
21165
+ "type": "object",
21166
+ "properties": {
21167
+ "options": {
21168
+ "minItems": 1,
21169
+ "type": "array",
21170
+ "items": {
21171
+ "minItems": 1,
21172
+ "type": "array",
21173
+ "items": {
21174
+ "type": "string"
21175
+ }
21176
+ },
21177
+ "description": "Alternative credential query id combinations."
21178
+ },
21179
+ "required": {
21180
+ "description": "Whether this credential set is mandatory.",
21181
+ "type": "boolean"
21182
+ }
21183
+ },
21184
+ "required": [
21185
+ "options"
21186
+ ],
21187
+ "additionalProperties": false
21188
+ }
21189
+ }
21190
+ },
21191
+ "required": [
21192
+ "credentials"
21193
+ ],
21194
+ "additionalProperties": false,
21195
+ "description": "DCQL query defining requested credentials and claims."
21196
+ },
21197
+ "transaction_data": {
21198
+ "description": "Optional transaction data descriptors.",
21199
+ "anyOf": [
21200
+ {
21201
+ "type": "array",
21202
+ "items": {
21203
+ "type": "object",
21204
+ "properties": {
21205
+ "type": {
21206
+ "type": "string",
21207
+ "description": "Transaction data type identifier."
21208
+ },
21209
+ "credential_ids": {
21210
+ "type": "array",
21211
+ "items": {
21212
+ "type": "string"
21213
+ },
21214
+ "description": "Credential query ids this transaction data applies to."
21215
+ },
21216
+ "payload": {
21217
+ "description": "Transaction details. Required for TS12 SCA transaction data."
21218
+ }
21219
+ },
21220
+ "required": [
21221
+ "type",
21222
+ "credential_ids"
21223
+ ],
21224
+ "additionalProperties": {}
21225
+ }
21226
+ },
21227
+ {
21228
+ "type": "null"
21229
+ }
21230
+ ]
21231
+ },
21232
+ "registration_cert": {
21233
+ "description": "Optional registration certificate request settings.",
21234
+ "anyOf": [
21235
+ {
21236
+ "type": "object",
21237
+ "properties": {
21238
+ "id": {
21239
+ "type": "string"
21240
+ },
21241
+ "body": {
21242
+ "type": "object",
21243
+ "properties": {
21244
+ "privacy_policy": {
21245
+ "type": "string"
21246
+ },
21247
+ "support_uri": {
21248
+ "type": "string"
21249
+ },
21250
+ "intermediary": {
21251
+ "type": "string"
21252
+ },
21253
+ "purpose": {
21254
+ "type": "array",
21255
+ "items": {
21256
+ "type": "object",
21257
+ "properties": {
21258
+ "lang": {
21259
+ "type": "string"
21260
+ },
21261
+ "content": {
21262
+ "type": "string"
21263
+ }
21264
+ },
21265
+ "required": [
21266
+ "lang",
21267
+ "content"
21268
+ ],
21269
+ "additionalProperties": false
21270
+ }
21271
+ },
21272
+ "credentials": {
21273
+ "type": "array",
21274
+ "items": {
21275
+ "type": "object",
21276
+ "propertyNames": {
21277
+ "type": "string"
21278
+ },
21279
+ "additionalProperties": {}
21280
+ }
21281
+ },
21282
+ "provides_attestations": {
21283
+ "type": "array",
21284
+ "items": {
21285
+ "type": "string",
21286
+ "minLength": 1
21287
+ }
21288
+ }
21289
+ },
21290
+ "additionalProperties": false
21291
+ },
21292
+ "jwt": {
21293
+ "type": "string"
21294
+ }
21295
+ },
21296
+ "additionalProperties": false
21297
+ },
21298
+ {
21299
+ "type": "null"
21300
+ }
21301
+ ]
21302
+ },
21303
+ "registrationCertImportJwt": {
21304
+ "description": "Optional imported registration certificate JWT.",
21305
+ "type": [
21306
+ "string",
21307
+ "null"
21308
+ ]
21309
+ },
21310
+ "registrationCertImportId": {
21311
+ "description": "Optional registrar-side registration certificate id.",
21312
+ "type": [
21313
+ "string",
21314
+ "null"
21315
+ ]
21316
+ },
21317
+ "registrationCertBodyPrivacyPolicy": {
21318
+ "description": "Optional registration certificate privacy policy URI.",
21319
+ "type": [
21320
+ "string",
21321
+ "null"
21322
+ ]
21323
+ },
21324
+ "registrationCertBodySupportUri": {
21325
+ "description": "Optional registration certificate support URI.",
21326
+ "type": [
21327
+ "string",
21328
+ "null"
21329
+ ]
21330
+ },
21331
+ "registrationCertBodyIntermediary": {
21332
+ "description": "Optional registration certificate intermediary.",
21333
+ "type": [
21334
+ "string",
21335
+ "null"
21336
+ ]
21337
+ },
21338
+ "registrationCertBodyPurpose": {
21339
+ "description": "Optional registration certificate purpose entries.",
21340
+ "anyOf": [
21341
+ {
21342
+ "type": "array",
21343
+ "items": {
21344
+ "type": "object",
21345
+ "properties": {
21346
+ "lang": {
21347
+ "type": "string"
21348
+ },
21349
+ "content": {
21350
+ "type": "string"
21351
+ }
21352
+ },
21353
+ "additionalProperties": false
21354
+ }
21355
+ },
21356
+ {
21357
+ "type": "null"
21358
+ }
21359
+ ]
21360
+ },
21361
+ "webhookEndpointId": {
21362
+ "description": "Optional webhook endpoint id for presentation callbacks.",
21363
+ "type": [
21364
+ "string",
21365
+ "null"
21366
+ ]
21367
+ },
21368
+ "attached": {
21369
+ "description": "Optional attachments included with presentation requests.",
21370
+ "anyOf": [
21371
+ {
21372
+ "type": "array",
21373
+ "items": {
21374
+ "type": "object",
21375
+ "properties": {
21376
+ "format": {
21377
+ "type": "string",
21378
+ "description": "Attachment format identifier."
21379
+ },
21380
+ "data": {
21381
+ "description": "Attachment payload."
21382
+ },
21383
+ "credential_ids": {
21384
+ "description": "Optional credential query ids bound to this attachment.",
21385
+ "type": "array",
21386
+ "items": {
21387
+ "type": "string"
21388
+ }
21389
+ }
21390
+ },
21391
+ "required": [
21392
+ "format",
21393
+ "data"
21394
+ ],
21395
+ "additionalProperties": false
21396
+ }
21397
+ },
21398
+ {
21399
+ "type": "null"
21400
+ }
21401
+ ]
21402
+ },
21403
+ "redirectUri": {
21404
+ "description": "Optional redirect URI after presentation completion.",
21405
+ "type": [
21406
+ "string",
21407
+ "null"
21408
+ ]
21409
+ },
21410
+ "accessKeyChainId": {
21411
+ "description": "Optional key chain id for access token/auth operations.",
21412
+ "type": [
21413
+ "string",
21414
+ "null"
21415
+ ]
21416
+ },
21417
+ "readerAuth": {
21418
+ "description": "Whether reader authentication is required for mDoc requests.",
21419
+ "type": [
21420
+ "boolean",
21421
+ "null"
21422
+ ]
21423
+ }
21424
+ },
21425
+ "required": [
21426
+ "id",
21427
+ "dcql_query"
21428
+ ],
21429
+ "additionalProperties": false,
21430
+ "title": "PresentationConfigCreateDto"
21431
+ }
21432
+ }
20004
21433
  }
20005
21434
  ];
20006
21435
 
@@ -22726,7 +24155,7 @@ function createDeploymentCommands(context, setExitCode) {
22726
24155
  // package.json
22727
24156
  var package_default = {
22728
24157
  name: "@eudiplo/cli",
22729
- version: "8.1.0-main.a6a67b3",
24158
+ version: "8.1.0-main.a83e1b5",
22730
24159
  description: "Deployment-aware command line tools for EUDIPLO",
22731
24160
  private: false,
22732
24161
  type: "module",
@@ -22746,7 +24175,7 @@ var package_default = {
22746
24175
  "build:sea:bundle": "pnpm assets:sync && pnpm assets:check && esbuild src/index.ts --bundle --platform=node --format=esm --target=node22.12 --alias:jsonc-parser=jsonc-parser/lib/esm/main.js --outfile=dist-sea/index.js",
22747
24176
  "build:sea": "node scripts/build-cli-sea.mjs",
22748
24177
  dev: "tsx src/index.ts",
22749
- test: "vitest run --project cli",
24178
+ test: "vitest run --root ../.. --project cli",
22750
24179
  lint: "biome lint .",
22751
24180
  prepublishOnly: "pnpm build:publish"
22752
24181
  },
@@ -22789,7 +24218,7 @@ var package_default = {
22789
24218
  esbuild: "^0.28.2",
22790
24219
  tsx: "^4.23.13",
22791
24220
  typescript: "^7.0.2",
22792
- vitest: "4.1.11"
24221
+ vitest: "5.0.2"
22793
24222
  }
22794
24223
  };
22795
24224
 
@@ -24134,7 +25563,7 @@ function parseVersion(tag) {
24134
25563
  function compareVersions2(a, b) {
24135
25564
  return a.major - b.major || a.minor - b.minor || a.patch - b.patch;
24136
25565
  }
24137
- var migrationBaseUrl = "https://docs.eudiplo.dev/migration";
25566
+ var migrationBaseUrl = "https://docs.eudiplo.dev/upgrade";
24138
25567
  function migrationNotes(from, to) {
24139
25568
  const fromVersion = parseVersion(from);
24140
25569
  const toVersion = parseVersion(to);
@@ -24380,7 +25809,7 @@ function createProgram(context, setExitCode) {
24380
25809
  "Print the installed CLI version"
24381
25810
  ).helpCommand(true).addHelpText(
24382
25811
  "afterAll",
24383
- "\nFor more information, see https://docs.eudiplo.dev/getting-started/quick-start"
25812
+ "\nFor more information, see https://docs.eudiplo.dev/cookbooks/foundation"
24384
25813
  );
24385
25814
  program2.addCommand(createDemoCommand(context, setExitCode));
24386
25815
  program2.addCommand(createInitCommand(context, setExitCode));