Appearance
Verifier Configuration
The verifier configuration enable the accounts to setup request of Verifiable Credential(VC) request from wallets using OID4VCI protocol. This step is required to enable the verification of VC using Verifier OID4VP.
Configuration Setting: oid4vp
Using this setting, types of VC, claims, format and other parameters can be defined for the verifier to request from the wallet.
Get Value
The following request will get the oid4vp configuration value.
bash
curl -X GET "https://profile.godiddy.com/1.0.0/profile/metadata/oid4vp" \
-H "Authorization: Bearer b082c420-df67-4b06-899c-b7c51d75fba0"1
2
2
Set Value
The following is an example request to set the oid4vp configuration value. This example sets the configuration for presentation definition named EuPid2023_sd_jwt. The section below explains the structure of the configuration.
bash
curl -X PUT "https://profile.godiddy.com/1.0.0/profile/metadata/oid4vp" \
-H "Authorization: Bearer b082c420-df67-4b06-899c-b7c51d75fba0" \
-H "Content-Type: application/json" \
-d '{
"clientConfig":{
"clientDid":"did:key:zDnaet6i5C95fPDR9MaHRiroWg6foddVgFuF4Vk8pExQwZVNa",
"clientKid":"did:key:zDnaet6i5C95fPDR9MaHRiroWg6foddVgFuF4Vk8pExQwZVNa#zDnaet6i5C95fPDR9MaHRiroWg6foddVgFuF4Vk8pExQwZVNa",
},
"presentationDefinitions":{
"EuPid2023_sd_jwt":{
"credentials":[
{
"id":"eudi_pid_1",
"format":"dc+sd-jwt",
"multiple":false,
"meta":{
"vct_values":[
"urn:eu.europa.ec.eudi:pid:1"
]
},
"claims":[
{
"id":"given_name",
"path":[
"given_name"
]
},
{
"id":"family_name",
"path":[
"family_name"
]
}
]
}
],
"credential_sets":[
{
"options":[
[
"eudi_pid_1"
]
],
"required":true
}
]
}
}
}'1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Structure
The configuration contains two main sections: presentationDefinitions and clientConfig. The presentationDefinitions section contains one or more presentation definitions that define the requirements for accurate presentation of Verifiable Credentials. The clientConfig section contains configuration settings for the client.
json
{
"presentationDefinitions": {
"Definition_1": {
"credentials": [],
"credential_sets": []
},
"Definition_2": {
"credentials": [],
"credential_sets": []
}
},
"clientConfig": {
"clientDid": "did:key:...",
"clientKid": "did:key:...#key-id"
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Client Configuration Properties
The clientConfig section specifies how the verifier identifies itself and signs the presentation request.
| Property | Type | Description | Required |
|---|---|---|---|
clientDid | String | DID used as the client identifier and for signing authorization requests | Yes |
clientKid | String | Key ID used for signing. Must be a verification key from the above DID | Yes |
The clientDid must be populated with the existing DID. See DID Registration for details on how to create a DID.
Presentation Definitions Properties
The presentationDefinitions define the requirements for the presentation of Verifiable Credentials. The key of each presentation definition is the name of the credential/presentation request, and the value is the actual presentation definition.
Each presentation definition contains the following properties:
| Property | Type | Description | Required |
|---|---|---|---|
credentials | Array of credential objects | Declares credential types and required claims | Yes |
credential_sets | Array of credential_set objects | Groups of credential combinations required for presentation | No |
Credential Object credential
The credential object defines the requirements for a single Verifiable Credential. The properties of the credential object are:
| Property | Type | Description | Required |
|---|---|---|---|
id | String | Unique identifier for this credential definition | Yes |
format | String | Credential format (see supported formats below) | Yes |
meta | Object | Format-specific metadata | Yes |
multiple | Boolean | Always false (multi-instance credentials not supported) | No |
claims | Array | A list of claim objects defining required fields | No |
Meta Object meta
The meta object defines the properties specific to the credential format.
Formats jwt_vc_json and jwt_vp_json
| Property | Type | Description |
|---|---|---|
type_values | Array of arrays of strings | Each inner array defines the requested credential's type |
Example:
json
{
"type_values": [
[
"EuPid2023"
]
]
}1
2
3
4
5
6
7
2
3
4
5
6
7
Format dc+sd-jwt
| Property | Type | Description |
|---|---|---|
vct_values | Array of strings | Each string defines the requested credentials vct |
Example:
json
{
"vct_values": [
"urn:eu.europa.ec.eudi:pid:1"
]
}1
2
3
4
5
2
3
4
5
Formats ldp_vc and ldp_vp
| Property | Type | Description |
|---|---|---|
type_values | Array of arrays of strings | Each inner array defines requested credentials type or @context |
Example:
json
{
"type_values": [
[
"VerifiableCredential",
"EuPid2023"
]
]
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Supported Formats
| Format | Format Identifier |
|---|---|
| JWT VC | jwt_vc_json |
| JWT VP | jwt_vp_json |
| JSON-LD VC | ldp_vc |
| JSON-LD VP | ldp_vp |
| DC-SD-JWT | dc+sd-jwt |
Claim Object claim
The claim object specifies which fields the Credential should disclose. For credential formats without a selective disclosure (jwt_vc_json, jwt_vp_json, ldp_vc, ldp_vp), the verifier cannot request individual fields (the claims array is ignored).
For SD-JWT (dc+sd-jwt), the claims array is used to specify exactly which claims must be selectively disclosed.
| Property | Type | Description | Required |
|---|---|---|---|
id | String | Claim identifier | No |
path | Array of strings | Path to the requested field in the credential | Yes |
The path array defines how to reach a specific claim inside the credential payload. Each element represents one step in the JSON object hierarchy.
Given this json representation of credential payload:
json
{
"first_name": "Bernd",
"last_name": "Abt",
"address": {
"street": "Main Street 1",
"city": "Metropolis"
}
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
To request the first_name field:
json
{
"path": [
"first_name"
]
}1
2
3
4
5
2
3
4
5
To request the city field inside the address:
json
{
"path": [
"address",
"city"
]
}1
2
3
4
5
6
2
3
4
5
6
The credential_set object
The credential_set defines one or more acceptable combinations of credentials.
| Property | Type | Description | Required |
|---|---|---|---|
options | Array of arrays | One or more IDs referencing credentials defined in the credentials array. | Yes |
required | Boolean | Whether this credential set is required for the presentation | No |
Example credential_set for a single credential requirement:
json
{
"options": [
[
"eudi_pid_1"
]
],
"required": true
}1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
Complete Example
This is a complete example of a presentation definition requesting an EU PID SD-JWT with selective disclosure of the given name and family name.
json
{
"credentials": [
{
"id": "eudi_pid_1",
"format": "dc+sd-jwt",
"multiple": false,
"meta": {
"vct_values": [
"urn:eu.europa.ec.eudi:pid:1"
]
},
"claims": [
{
"id": "given_name",
"path": [
"given_name"
]
},
{
"id": "family_name",
"path": [
"family_name"
]
}
]
}
],
"credential_sets": [
{
"options": [
[
"eudi_pid_1"
]
],
"required": true
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Example Configurations
EU PID SD-JWT
Presentation definition for SD-JWT VC. Requesting selective disclosure of the given name and family name.
json
{
"EuPid2023_sd_jwt": {
"credentials": [
{
"id": "eudi_pid_1",
"format": "dc+sd-jwt",
"multiple": false,
"meta": {
"vct_values": [
"urn:eu.europa.ec.eudi:pid:1"
]
},
"claims": [
{
"id": "given_name",
"path": [
"given_name"
]
},
{
"id": "family_name",
"path": [
"family_name"
]
}
]
}
],
"credential_sets": [
{
"options": [
[
"eudi_pid_1"
]
],
"required": true
}
]
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
This example will request the wallet to present only the given_name and family_name.
EU PID JWT VC
json
{
"EuPid2023_jwt_vc_json": {
"credentials": [
{
"id": "eudi_pid_1",
"format": "jwt_vc_json",
"multiple": false,
"meta": {
"type_values": [
[
"EuPid2023"
]
]
}
}
],
"credential_sets": [
{
"options": [
[
"eudi_pid_1"
]
],
"required": true
}
]
}
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28