@eudiplo/cli 7.2.0-main.5fdd9ce → 7.2.0-main.b7bac52

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 (177) hide show
  1. package/README.md +44 -0
  2. package/dist/commands/commands/index.d.ts +4 -0
  3. package/dist/commands/commands/index.d.ts.map +1 -0
  4. package/dist/commands/commands/index.js +13 -0
  5. package/dist/commands/commands/index.js.map +1 -0
  6. package/dist/commands/commands/render.d.ts +4 -0
  7. package/dist/commands/commands/render.d.ts.map +1 -0
  8. package/dist/commands/commands/render.js +52 -0
  9. package/dist/commands/commands/render.js.map +1 -0
  10. package/dist/commands/completion/action.d.ts +6 -0
  11. package/dist/commands/completion/action.d.ts.map +1 -0
  12. package/dist/commands/completion/action.js +133 -0
  13. package/dist/commands/completion/action.js.map +1 -0
  14. package/dist/commands/completion/index.d.ts +6 -0
  15. package/dist/commands/completion/index.d.ts.map +1 -0
  16. package/dist/commands/completion/index.js +23 -0
  17. package/dist/commands/completion/index.js.map +1 -0
  18. package/dist/commands/config/action.d.ts +4 -0
  19. package/dist/commands/config/action.d.ts.map +1 -0
  20. package/dist/commands/config/action.js +33 -0
  21. package/dist/commands/config/action.js.map +1 -0
  22. package/dist/commands/config/editor/action.d.ts +3 -0
  23. package/dist/commands/config/editor/action.d.ts.map +1 -0
  24. package/dist/commands/config/editor/action.js +112 -0
  25. package/dist/commands/config/editor/action.js.map +1 -0
  26. package/dist/commands/config/editor/index.d.ts +5 -0
  27. package/dist/commands/config/editor/index.d.ts.map +1 -0
  28. package/dist/commands/config/editor/index.js +20 -0
  29. package/dist/commands/config/editor/index.js.map +1 -0
  30. package/dist/commands/config/index.d.ts +1 -1
  31. package/dist/commands/config/index.d.ts.map +1 -1
  32. package/dist/commands/config/index.js +22 -0
  33. package/dist/commands/config/index.js.map +1 -1
  34. package/dist/commands/config/portability/action.d.ts +5 -0
  35. package/dist/commands/config/portability/action.d.ts.map +1 -0
  36. package/dist/commands/config/portability/action.js +164 -0
  37. package/dist/commands/config/portability/action.js.map +1 -0
  38. package/dist/commands/config/portability/index.d.ts +5 -0
  39. package/dist/commands/config/portability/index.d.ts.map +1 -0
  40. package/dist/commands/config/portability/index.js +44 -0
  41. package/dist/commands/config/portability/index.js.map +1 -0
  42. package/dist/commands/config/portability/migrations.d.ts +24 -0
  43. package/dist/commands/config/portability/migrations.d.ts.map +1 -0
  44. package/dist/commands/config/portability/migrations.js +95 -0
  45. package/dist/commands/config/portability/migrations.js.map +1 -0
  46. package/dist/commands/config/portability/migrations.spec.d.ts +2 -0
  47. package/dist/commands/config/portability/migrations.spec.d.ts.map +1 -0
  48. package/dist/commands/config/portability/migrations.spec.js +32 -0
  49. package/dist/commands/config/portability/migrations.spec.js.map +1 -0
  50. package/dist/commands/config/tenant/action.d.ts.map +1 -1
  51. package/dist/commands/config/tenant/action.js +7 -4
  52. package/dist/commands/config/tenant/action.js.map +1 -1
  53. package/dist/commands/config/tenant/index.d.ts.map +1 -1
  54. package/dist/commands/config/tenant/index.js.map +1 -1
  55. package/dist/commands/config/validate/action.d.ts.map +1 -1
  56. package/dist/commands/config/validate/action.js +3 -1
  57. package/dist/commands/config/validate/action.js.map +1 -1
  58. package/dist/commands/config/validate/registry.d.ts +1 -0
  59. package/dist/commands/config/validate/registry.d.ts.map +1 -1
  60. package/dist/commands/config/validate/registry.js +1 -1
  61. package/dist/commands/config/validate/registry.js.map +1 -1
  62. package/dist/commands/config/validate/registry.json +11 -22
  63. package/dist/commands/config/validate/report.d.ts.map +1 -1
  64. package/dist/commands/config/validate/report.js +6 -1
  65. package/dist/commands/config/validate/report.js.map +1 -1
  66. package/dist/commands/config/validate/schemas.d.ts +1 -0
  67. package/dist/commands/config/validate/schemas.d.ts.map +1 -1
  68. package/dist/commands/config/validate/schemas.js +16 -5
  69. package/dist/commands/config/validate/schemas.js.map +1 -1
  70. package/dist/commands/config/validate/types.d.ts.map +1 -1
  71. package/dist/commands/config/validate/validator.d.ts.map +1 -1
  72. package/dist/commands/config/validate/validator.js +13 -5
  73. package/dist/commands/config/validate/validator.js.map +1 -1
  74. package/dist/commands/demo/action.d.ts.map +1 -1
  75. package/dist/commands/demo/action.js +2 -1
  76. package/dist/commands/demo/action.js.map +1 -1
  77. package/dist/commands/demo/index.d.ts.map +1 -1
  78. package/dist/commands/demo/index.js.map +1 -1
  79. package/dist/commands/deployment/action.d.ts.map +1 -1
  80. package/dist/commands/deployment/action.js +10 -3
  81. package/dist/commands/deployment/action.js.map +1 -1
  82. package/dist/commands/deployment/index.d.ts.map +1 -1
  83. package/dist/commands/deployment/index.js.map +1 -1
  84. package/dist/commands/doctor/action.d.ts.map +1 -1
  85. package/dist/commands/doctor/action.js +1 -1
  86. package/dist/commands/doctor/action.js.map +1 -1
  87. package/dist/commands/init/action.d.ts.map +1 -1
  88. package/dist/commands/init/action.js +19 -6
  89. package/dist/commands/init/action.js.map +1 -1
  90. package/dist/commands/init/index.d.ts.map +1 -1
  91. package/dist/commands/init/index.js.map +1 -1
  92. package/dist/commands/instance/action.d.ts +4 -0
  93. package/dist/commands/instance/action.d.ts.map +1 -1
  94. package/dist/commands/instance/action.js +66 -1
  95. package/dist/commands/instance/action.js.map +1 -1
  96. package/dist/commands/instance/index.d.ts.map +1 -1
  97. package/dist/commands/instance/index.js +31 -1
  98. package/dist/commands/instance/index.js.map +1 -1
  99. package/dist/commands/shared.d.ts.map +1 -1
  100. package/dist/commands/shared.js +4 -1
  101. package/dist/commands/shared.js.map +1 -1
  102. package/dist/commands/status/action.d.ts.map +1 -1
  103. package/dist/commands/status/action.js.map +1 -1
  104. package/dist/commands/version/action.d.ts.map +1 -1
  105. package/dist/commands/version/action.js +3 -1
  106. package/dist/commands/version/action.js.map +1 -1
  107. package/dist/index.js +0 -0
  108. package/dist/runtime.d.ts +2 -0
  109. package/dist/runtime.d.ts.map +1 -1
  110. package/dist/runtime.js +8 -1
  111. package/dist/runtime.js.map +1 -1
  112. package/dist/sea-assets.d.ts +4 -2
  113. package/dist/sea-assets.d.ts.map +1 -1
  114. package/dist/sea-assets.js +6 -3
  115. package/dist/sea-assets.js.map +1 -1
  116. package/dist/services/cli-config.d.ts +2 -0
  117. package/dist/services/cli-config.d.ts.map +1 -1
  118. package/dist/services/cli-config.js +22 -1
  119. package/dist/services/cli-config.js.map +1 -1
  120. package/dist/services/compose-project.d.ts.map +1 -1
  121. package/dist/services/compose-project.js +14 -6
  122. package/dist/services/compose-project.js.map +1 -1
  123. package/dist/services/deployment-drivers.d.ts.map +1 -1
  124. package/dist/services/deployment-drivers.js +20 -6
  125. package/dist/services/deployment-drivers.js.map +1 -1
  126. package/dist/services/diagnostics.d.ts.map +1 -1
  127. package/dist/services/diagnostics.js +3 -1
  128. package/dist/services/diagnostics.js.map +1 -1
  129. package/dist/services/instance-selection.d.ts.map +1 -1
  130. package/dist/services/instance-selection.js.map +1 -1
  131. package/dist/services/project-directory.d.ts.map +1 -1
  132. package/dist/services/project-directory.js.map +1 -1
  133. package/dist/types.d.ts.map +1 -1
  134. package/package.json +5 -3
  135. package/templates/demo-config/issuance/issuance.json +20 -12
  136. package/templates/demo-config/key-chains/access.json +13 -2
  137. package/templates/demo-config/key-chains/attestation.json +15 -4
  138. package/templates/demo-config/key-chains/status-list.json +15 -4
  139. package/templates/demo-config/key-chains/trust-list.json +13 -2
  140. package/templates/demo-config/presentation/age-over-18.json +46 -53
  141. package/templates/demo-config/presentation/pid.json +44 -0
  142. package/templates/demo-config.manifest.json +1 -0
  143. package/templates/schemas/AttributeProviderAuth.schema.json +60 -0
  144. package/templates/schemas/AttributeProviderConfigFile.schema.json +37 -0
  145. package/templates/schemas/CertImportDto.schema.json +35 -0
  146. package/templates/schemas/ClientConfigFile.schema.json +37 -0
  147. package/templates/schemas/ConfigDocumentMetadata.schema.json +25 -0
  148. package/templates/schemas/CreateStatusListDto.schema.json +46 -0
  149. package/templates/schemas/CreateTenantDto.schema.json +116 -0
  150. package/templates/schemas/CredentialConfigFile.schema.json +37 -0
  151. package/templates/schemas/DCQL.schema.json +401 -0
  152. package/templates/schemas/EmbeddedDisclosurePolicy.schema.json +106 -0
  153. package/templates/schemas/ImportTenantDto.schema.json +69 -0
  154. package/templates/schemas/IssuanceConfigFile.schema.json +32 -0
  155. package/templates/schemas/KeyChainConfigFile.schema.json +101 -0
  156. package/templates/schemas/KeyChainCreateDto.schema.json +66 -0
  157. package/templates/schemas/KeyChainUpdateDto.schema.json +40 -0
  158. package/templates/schemas/KmsConfigFile.schema.json +37 -0
  159. package/templates/schemas/PresentationConfigFile.schema.json +32 -0
  160. package/templates/schemas/RegistrarConfigFile.schema.json +37 -0
  161. package/templates/schemas/RotationPolicyCreateDto.schema.json +28 -0
  162. package/templates/schemas/RotationPolicyUpdateDto.schema.json +25 -0
  163. package/templates/schemas/SessionStorageConfig.schema.json +24 -0
  164. package/templates/schemas/StatusListConfig.schema.json +51 -0
  165. package/templates/schemas/StatusListConfigFile.schema.json +37 -0
  166. package/templates/schemas/TransactionData.schema.json +24 -0
  167. package/templates/schemas/TrustListConfigFile.schema.json +37 -0
  168. package/templates/schemas/UpdateAttributeProviderDto.schema.json +93 -0
  169. package/templates/schemas/UpdateClientDto.schema.json +62 -0
  170. package/templates/schemas/UpdateStatusListConfigDto.schema.json +85 -0
  171. package/templates/schemas/UpdateStatusListDto.schema.json +33 -0
  172. package/templates/schemas/UpdateTenantDto.schema.json +96 -0
  173. package/templates/schemas/UpdateWebhookEndpointDto.schema.json +93 -0
  174. package/templates/schemas/VCT.schema.json +37 -0
  175. package/templates/schemas/WebhookConfig.schema.json +80 -0
  176. package/templates/schemas/WebhookEndpointConfigFile.schema.json +37 -0
  177. package/templates/schemas.manifest.json +34 -1
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "./ClientConfigFile.schema.json",
4
+ "title": "ClientConfigFile",
5
+ "description": "A client configuration file in legacy payload or versioned-envelope form.",
6
+ "oneOf": [
7
+ {
8
+ "$ref": "./CreateClientDto.schema.json"
9
+ },
10
+ {
11
+ "type": "object",
12
+ "properties": {
13
+ "apiVersion": {
14
+ "type": "string",
15
+ "const": "eudiplo.io/client/v1"
16
+ },
17
+ "kind": {
18
+ "type": "string",
19
+ "const": "Client"
20
+ },
21
+ "metadata": {
22
+ "$ref": "./ConfigDocumentMetadata.schema.json"
23
+ },
24
+ "spec": {
25
+ "$ref": "./CreateClientDto.schema.json"
26
+ }
27
+ },
28
+ "required": [
29
+ "apiVersion",
30
+ "kind",
31
+ "metadata",
32
+ "spec"
33
+ ],
34
+ "additionalProperties": false
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "./ConfigDocumentMetadata.schema.json",
4
+ "title": "ConfigDocumentMetadata",
5
+ "type": "object",
6
+ "properties": {
7
+ "id": {
8
+ "type": "string",
9
+ "minLength": 1,
10
+ "description": "Stable resource identifier."
11
+ },
12
+ "generation": {
13
+ "type": "integer",
14
+ "minimum": 1,
15
+ "description": "Monotonically increasing configuration generation."
16
+ },
17
+ "ownership": {
18
+ "type": "string",
19
+ "enum": ["unmanaged", "file-managed"],
20
+ "description": "Requested ownership recorded when the document is applied."
21
+ }
22
+ },
23
+ "required": ["id"],
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "credentialConfigurationId": {
6
+ "description": "Optional credential configuration binding.",
7
+ "type": "string",
8
+ "minLength": 1
9
+ },
10
+ "keyChainId": {
11
+ "description": "Optional key chain to sign the list with.",
12
+ "type": "string",
13
+ "minLength": 1
14
+ },
15
+ "bits": {
16
+ "description": "Optional bits-per-status value.",
17
+ "anyOf": [
18
+ {
19
+ "type": "number",
20
+ "const": 1
21
+ },
22
+ {
23
+ "type": "number",
24
+ "const": 2
25
+ },
26
+ {
27
+ "type": "number",
28
+ "const": 4
29
+ },
30
+ {
31
+ "type": "number",
32
+ "const": 8
33
+ }
34
+ ]
35
+ },
36
+ "capacity": {
37
+ "description": "Optional status list capacity.",
38
+ "type": "integer",
39
+ "minimum": 1000,
40
+ "maximum": 9007199254740991
41
+ }
42
+ },
43
+ "additionalProperties": false,
44
+ "$id": "./CreateStatusListDto.schema.json",
45
+ "title": "CreateStatusListDto"
46
+ }
@@ -0,0 +1,116 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "id": {
6
+ "type": "string",
7
+ "minLength": 1,
8
+ "description": "Unique tenant identifier."
9
+ },
10
+ "name": {
11
+ "default": "EUDIPLO",
12
+ "description": "Display name of the tenant.",
13
+ "type": "string",
14
+ "minLength": 1
15
+ },
16
+ "description": {
17
+ "description": "Optional tenant description.",
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "roles": {
22
+ "description": "Optional default role assignments for the tenant.",
23
+ "type": "array",
24
+ "items": {
25
+ "type": "string",
26
+ "enum": [
27
+ "tenants:manage",
28
+ "issuance:offer",
29
+ "issuance:manage",
30
+ "presentation:request",
31
+ "presentation:manage",
32
+ "clients:manage",
33
+ "users:manage",
34
+ "registrar:manage"
35
+ ]
36
+ }
37
+ },
38
+ "sessionConfig": {
39
+ "description": "Optional tenant-specific session storage configuration.",
40
+ "type": "object",
41
+ "properties": {
42
+ "ttlSeconds": {
43
+ "description": "Session time-to-live in seconds.",
44
+ "type": "integer",
45
+ "minimum": 60,
46
+ "maximum": 9007199254740991
47
+ },
48
+ "cleanupMode": {
49
+ "description": "Whether to fully delete or anonymize expired sessions.",
50
+ "type": "string",
51
+ "enum": [
52
+ "full",
53
+ "anonymize"
54
+ ]
55
+ }
56
+ },
57
+ "additionalProperties": false
58
+ },
59
+ "statusListConfig": {
60
+ "description": "Optional tenant-specific status list defaults.",
61
+ "type": "object",
62
+ "properties": {
63
+ "capacity": {
64
+ "description": "Default status list capacity.",
65
+ "type": "integer",
66
+ "minimum": 100,
67
+ "maximum": 9007199254740991
68
+ },
69
+ "bits": {
70
+ "description": "Bits-per-status setting (1, 2, 4, or 8).",
71
+ "anyOf": [
72
+ {
73
+ "type": "number",
74
+ "const": 1
75
+ },
76
+ {
77
+ "type": "number",
78
+ "const": 2
79
+ },
80
+ {
81
+ "type": "number",
82
+ "const": 4
83
+ },
84
+ {
85
+ "type": "number",
86
+ "const": 8
87
+ }
88
+ ]
89
+ },
90
+ "ttl": {
91
+ "description": "JWT TTL for status list tokens in seconds.",
92
+ "type": "integer",
93
+ "minimum": 60,
94
+ "maximum": 9007199254740991
95
+ },
96
+ "immediateUpdate": {
97
+ "description": "Regenerate status list JWTs immediately after status updates.",
98
+ "type": "boolean"
99
+ },
100
+ "enableAggregation": {
101
+ "description": "Include aggregation_uri in generated status list JWTs.",
102
+ "type": "boolean"
103
+ }
104
+ },
105
+ "additionalProperties": false
106
+ }
107
+ },
108
+ "required": [
109
+ "id",
110
+ "name"
111
+ ],
112
+ "additionalProperties": false,
113
+ "description": "Payload for creating a tenant.",
114
+ "$id": "./CreateTenantDto.schema.json",
115
+ "title": "CreateTenantDto"
116
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "./CredentialConfigFile.schema.json",
4
+ "title": "CredentialConfigFile",
5
+ "description": "A credential configuration file in legacy payload or versioned-envelope form.",
6
+ "oneOf": [
7
+ {
8
+ "$ref": "./CredentialConfigCreate.schema.json"
9
+ },
10
+ {
11
+ "type": "object",
12
+ "properties": {
13
+ "apiVersion": {
14
+ "type": "string",
15
+ "const": "eudiplo.io/credential-config/v1"
16
+ },
17
+ "kind": {
18
+ "type": "string",
19
+ "const": "CredentialConfig"
20
+ },
21
+ "metadata": {
22
+ "$ref": "./ConfigDocumentMetadata.schema.json"
23
+ },
24
+ "spec": {
25
+ "$ref": "./CredentialConfigCreate.schema.json"
26
+ }
27
+ },
28
+ "required": [
29
+ "apiVersion",
30
+ "kind",
31
+ "metadata",
32
+ "spec"
33
+ ],
34
+ "additionalProperties": false
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,401 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "credentials": {
6
+ "minItems": 1,
7
+ "type": "array",
8
+ "items": {
9
+ "oneOf": [
10
+ {
11
+ "type": "object",
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "minLength": 1,
16
+ "pattern": "^[A-Za-z0-9_-]+$",
17
+ "description": "Credential query identifier."
18
+ },
19
+ "multiple": {
20
+ "description": "Allow multiple matching credentials.",
21
+ "type": "boolean"
22
+ },
23
+ "claim_sets": {
24
+ "description": "Optional claim set constraints.",
25
+ "type": "array",
26
+ "items": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "string"
30
+ }
31
+ }
32
+ },
33
+ "trusted_authorities": {
34
+ "description": "Optional trusted authority constraints.",
35
+ "type": "array",
36
+ "items": {
37
+ "oneOf": [
38
+ {
39
+ "type": "object",
40
+ "properties": {
41
+ "type": {
42
+ "type": "string",
43
+ "const": "etsi_tl",
44
+ "description": "Trusted authority type discriminator for ETSI trust lists."
45
+ },
46
+ "values": {
47
+ "type": "array",
48
+ "items": {
49
+ "type": "object",
50
+ "properties": {
51
+ "trustListId": {
52
+ "description": "Optional trust list id reference.",
53
+ "type": "string"
54
+ },
55
+ "url": {
56
+ "description": "Optional trust list URL reference.",
57
+ "anyOf": [
58
+ {
59
+ "type": "string",
60
+ "format": "uri"
61
+ },
62
+ {
63
+ "type": "string",
64
+ "pattern": "^<TENANT_URL>(?:\\/.*)?$"
65
+ }
66
+ ]
67
+ },
68
+ "verifierKey": {
69
+ "description": "Optional verifier key material.",
70
+ "type": "object",
71
+ "propertyNames": {
72
+ "type": "string"
73
+ },
74
+ "additionalProperties": {}
75
+ },
76
+ "verifierX509Der": {
77
+ "description": "Optional verifier certificate in DER/base64 form.",
78
+ "type": "string"
79
+ }
80
+ },
81
+ "additionalProperties": false
82
+ },
83
+ "description": "Trust list references for ETSI TL verification."
84
+ }
85
+ },
86
+ "required": [
87
+ "type",
88
+ "values"
89
+ ],
90
+ "additionalProperties": false
91
+ },
92
+ {
93
+ "type": "object",
94
+ "properties": {
95
+ "type": {
96
+ "type": "string",
97
+ "const": "openid_federation",
98
+ "description": "Trusted authority type discriminator for OpenID Federation."
99
+ },
100
+ "values": {
101
+ "type": "array",
102
+ "items": {
103
+ "type": "string"
104
+ },
105
+ "description": "OpenID Federation authority identifiers."
106
+ }
107
+ },
108
+ "required": [
109
+ "type",
110
+ "values"
111
+ ],
112
+ "additionalProperties": false
113
+ }
114
+ ]
115
+ }
116
+ },
117
+ "format": {
118
+ "type": "string",
119
+ "const": "dc+sd-jwt",
120
+ "description": "Credential format discriminator."
121
+ },
122
+ "meta": {
123
+ "type": "object",
124
+ "properties": {
125
+ "vct_values": {
126
+ "minItems": 1,
127
+ "type": "array",
128
+ "items": {
129
+ "type": "string"
130
+ },
131
+ "description": "Accepted VCT values."
132
+ }
133
+ },
134
+ "required": [
135
+ "vct_values"
136
+ ],
137
+ "additionalProperties": false
138
+ },
139
+ "claims": {
140
+ "description": "Optional claim-level constraints.",
141
+ "type": "array",
142
+ "items": {
143
+ "type": "object",
144
+ "properties": {
145
+ "id": {
146
+ "description": "Optional claim query id.",
147
+ "type": "string"
148
+ },
149
+ "path": {
150
+ "type": "array",
151
+ "items": {
152
+ "anyOf": [
153
+ {
154
+ "type": "string"
155
+ },
156
+ {
157
+ "type": "number"
158
+ }
159
+ ]
160
+ },
161
+ "description": "Path to the claim value in presented credentials."
162
+ },
163
+ "values": {
164
+ "description": "Optional allowed values for the claim.",
165
+ "type": "array",
166
+ "items": {
167
+ "type": "string"
168
+ }
169
+ }
170
+ },
171
+ "required": [
172
+ "path"
173
+ ],
174
+ "additionalProperties": false
175
+ }
176
+ }
177
+ },
178
+ "required": [
179
+ "id",
180
+ "format",
181
+ "meta"
182
+ ],
183
+ "additionalProperties": false
184
+ },
185
+ {
186
+ "type": "object",
187
+ "properties": {
188
+ "id": {
189
+ "type": "string",
190
+ "minLength": 1,
191
+ "pattern": "^[A-Za-z0-9_-]+$",
192
+ "description": "Credential query identifier."
193
+ },
194
+ "multiple": {
195
+ "description": "Allow multiple matching credentials.",
196
+ "type": "boolean"
197
+ },
198
+ "claim_sets": {
199
+ "description": "Optional claim set constraints.",
200
+ "type": "array",
201
+ "items": {
202
+ "type": "array",
203
+ "items": {
204
+ "type": "string"
205
+ }
206
+ }
207
+ },
208
+ "trusted_authorities": {
209
+ "description": "Optional trusted authority constraints.",
210
+ "type": "array",
211
+ "items": {
212
+ "oneOf": [
213
+ {
214
+ "type": "object",
215
+ "properties": {
216
+ "type": {
217
+ "type": "string",
218
+ "const": "etsi_tl",
219
+ "description": "Trusted authority type discriminator for ETSI trust lists."
220
+ },
221
+ "values": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "object",
225
+ "properties": {
226
+ "trustListId": {
227
+ "description": "Optional trust list id reference.",
228
+ "type": "string"
229
+ },
230
+ "url": {
231
+ "description": "Optional trust list URL reference.",
232
+ "anyOf": [
233
+ {
234
+ "type": "string",
235
+ "format": "uri"
236
+ },
237
+ {
238
+ "type": "string",
239
+ "pattern": "^<TENANT_URL>(?:\\/.*)?$"
240
+ }
241
+ ]
242
+ },
243
+ "verifierKey": {
244
+ "description": "Optional verifier key material.",
245
+ "type": "object",
246
+ "propertyNames": {
247
+ "type": "string"
248
+ },
249
+ "additionalProperties": {}
250
+ },
251
+ "verifierX509Der": {
252
+ "description": "Optional verifier certificate in DER/base64 form.",
253
+ "type": "string"
254
+ }
255
+ },
256
+ "additionalProperties": false
257
+ },
258
+ "description": "Trust list references for ETSI TL verification."
259
+ }
260
+ },
261
+ "required": [
262
+ "type",
263
+ "values"
264
+ ],
265
+ "additionalProperties": false
266
+ },
267
+ {
268
+ "type": "object",
269
+ "properties": {
270
+ "type": {
271
+ "type": "string",
272
+ "const": "openid_federation",
273
+ "description": "Trusted authority type discriminator for OpenID Federation."
274
+ },
275
+ "values": {
276
+ "type": "array",
277
+ "items": {
278
+ "type": "string"
279
+ },
280
+ "description": "OpenID Federation authority identifiers."
281
+ }
282
+ },
283
+ "required": [
284
+ "type",
285
+ "values"
286
+ ],
287
+ "additionalProperties": false
288
+ }
289
+ ]
290
+ }
291
+ },
292
+ "format": {
293
+ "type": "string",
294
+ "const": "mso_mdoc",
295
+ "description": "Credential format discriminator."
296
+ },
297
+ "meta": {
298
+ "type": "object",
299
+ "properties": {
300
+ "doctype_value": {
301
+ "type": "string",
302
+ "minLength": 1,
303
+ "description": "Expected mDoc doctype value."
304
+ }
305
+ },
306
+ "required": [
307
+ "doctype_value"
308
+ ],
309
+ "additionalProperties": false
310
+ },
311
+ "claims": {
312
+ "description": "Optional mDoc claim-level constraints.",
313
+ "type": "array",
314
+ "items": {
315
+ "type": "object",
316
+ "properties": {
317
+ "id": {
318
+ "description": "Optional claim query id.",
319
+ "type": "string"
320
+ },
321
+ "path": {
322
+ "type": "array",
323
+ "items": {
324
+ "anyOf": [
325
+ {
326
+ "type": "string"
327
+ },
328
+ {
329
+ "type": "number"
330
+ }
331
+ ]
332
+ },
333
+ "description": "Path to the claim value in presented credentials."
334
+ },
335
+ "values": {
336
+ "description": "Optional allowed values for the claim.",
337
+ "type": "array",
338
+ "items": {
339
+ "type": "string"
340
+ }
341
+ },
342
+ "intent_to_retain": {
343
+ "description": "Whether relying party intends to retain the claim.",
344
+ "type": "boolean"
345
+ }
346
+ },
347
+ "required": [
348
+ "path"
349
+ ],
350
+ "additionalProperties": false
351
+ }
352
+ }
353
+ },
354
+ "required": [
355
+ "id",
356
+ "format",
357
+ "meta"
358
+ ],
359
+ "additionalProperties": false
360
+ }
361
+ ]
362
+ },
363
+ "description": "Credential queries requested by the verifier."
364
+ },
365
+ "credential_sets": {
366
+ "description": "Optional higher-level credential set requirements.",
367
+ "type": "array",
368
+ "items": {
369
+ "type": "object",
370
+ "properties": {
371
+ "options": {
372
+ "minItems": 1,
373
+ "type": "array",
374
+ "items": {
375
+ "minItems": 1,
376
+ "type": "array",
377
+ "items": {
378
+ "type": "string"
379
+ }
380
+ },
381
+ "description": "Alternative credential query id combinations."
382
+ },
383
+ "required": {
384
+ "description": "Whether this credential set is mandatory.",
385
+ "type": "boolean"
386
+ }
387
+ },
388
+ "required": [
389
+ "options"
390
+ ],
391
+ "additionalProperties": false
392
+ }
393
+ }
394
+ },
395
+ "required": [
396
+ "credentials"
397
+ ],
398
+ "additionalProperties": false,
399
+ "$id": "./DCQL.schema.json",
400
+ "title": "DCQL"
401
+ }