Important
This repository is no longer maintained.
All walt.id development continues in the monorepo:
This guide demonstrates how to create a Decentralized Identifier (DID) and to register it on the EBSI ledger. Furthermore the issuance as well as the verification-process of the GaiaxCredential is shown.
In the after-next step, we will use docker to create a container mount, which will be owned by root:root. To not have random root-owned directories laying around, we recommend first creating a new directory.
mkdir issuer-service && cd issuer-service
Pull the container:
docker pull docker.io/waltid/ssikit
We will continue to create an alias, otherwise the commands will be incredibly long. Of course this isn't actually mandatory, you can easily replace all instances of the alias-command "ssikit" with the content between the quotes in the next line.
alias ssikit="docker container run -p 7000-7004:7000-7004 -itv $(pwd)/data:/app/data docker.io/waltid/ssikit"
Now all sensitive data, like cryptographic key, DIDs and credentials will be stored with root-rights in the "data" directory.
Try it out:
ssikit -h
walt.id SSI Kit 1.1-SNAPSHOT (running on Java 16.0.2+7-67)
SSI Kit by walt.id
...
ssikit serve # binds to 127.0.0.1
ssikit serve -b 0.0.0.0 # binds to 0.0.0.0 <--- needed for docker
walt.id Core API: http://127.0.0.1:7000
walt.id Signatory API: http://127.0.0.1:7001
walt.id Custodian API: http://127.0.0.1:7002
walt.id Auditor API: http://127.0.0.1:7003
walt.id ESSIF API: http://127.0.0.1:7004
We start out by generating a Secp256k1 key.
CLI
ssikit key gen -a Secp256k1
Generating Secp256k1 key pair...
Key "efc581186a0945d8af75cdb8e1b16033" generated.
API
curl -X POST "https://core.ssikit.walt.id/v1/key/gen" -H "accept: application/json" -H "Content-Type: application/json" -d "{"keyAlgorithm":"ECDSA_Secp256k1"}"
{ "id": "38227a5b9f104a72be6b605d8da7544d" }
We continue to create a did:ebsi using the key which we've just generated.
CLI
ssikit did create -m ebsi -k efc581186a0945d8af75cdb8e1b16033
# obviously we'll use the key here that we've just generated
DID created: did:ebsi:zyc8qqkQifbyqZF7GGHW8zS
DID document (below, JSON): ...
API
curl -X POST "https://core.ssikit.walt.id/v1/did/create" -H "accept: application/json" -H "Content-Type: application/json" -d "{"method":"ebsi","keyAlias":"38227a5b9f104a72be6b605d8da7544d"}"
did:ebsi:zrgUxYjGLSBz2tYW75RUtbt
To use the EBSI API, we first have to get our EBSI bearer token.
On https://app.preprod.ebsi.eu/users-onboarding click "Onboard with Captcha" if you don't have an EU account. Choose "Desktop Wallet" to have the session token displayed (Mobile Wallet will show the token encoded in a QR code).
Save your bearer-token somewhere the container is able to access, e.g. data/bearer-token.txt. Depending on your system, you'll have to write there as root user.
echo "eyJhbGc_YOUR_TOKEN_HERE..." | sudo tee data/bearer-token.txt
Enter the did:ebsi that was generated above and supply the bearer-token.
CLI
ssikit essif onboard --did did:ebsi:zyc8qqkQifbyqZF7GGHW8zS data/bearer-token.txt
ESSIF onboarding for DID did:ebsi:zyc8qqkQifbyqZF7GGHW8zS running...
ESSIF onboarding for DID did:ebsi:zyc8qqkQifbyqZF7GGHW8zS was performed successfully.
curl -X POST "https://essif.ssikit.walt.id/v1/client/onboard" -H "accept: application/json" -H "Content-Type: application/json" -d "{"bearerToken":"eyJhbGciOiJF...","did":"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt"}"
API
"{"verifiableCredential":{"id":"vc:ebsi:authentication#1e36b26b-abb0-4bc ..."
CLI
ssikit essif auth-api --did did:ebsi:zyc8qqkQifbyqZF7GGHW8zS
EBSI Authentication API flow for DID did:ebsi:zyc8qqkQifbyqZF7GGHW8zS running...
EBSI Authentication API flow for DID did:ebsi:zyc8qqkQifbyqZF7GGHW8zS was performed successfully.
API
curl -X POST "https://essif.ssikit.walt.id/v1/client/auth" -H "accept: application/json" -H "Content-Type: text/plain" -d "did:ebsi:zrgUxYjGLSBz2tYW75RUtbt"
{}
CLI
ssikit essif did register --did did:ebsi:zyc8qqkQifbyqZF7GGHW8zS
EBSI ledger registration for DID did:ebsi:zyc8qqkQifbyqZF7GGHW8zS running...
EBSI ledger registration for DID did:ebsi:zyc8qqkQifbyqZF7GGHW8zS was performed successfully.
Call command: 'did resolve --did did:ebsi:zyc8qqkQifbyqZF7GGHW8zS' in order to retrieve the DID document from the EBSI ledger.
API
curl -X POST "https://essif.ssikit.walt.id/v1/client/registerDid" -H "accept: application/json" -H "Content-Type: text/plain" -d "did:ebsi:zrgUxYjGLSBz2tYW75RUtbt"
{}
CLI
ssikit did resolve --did did:ebsi:zyc8qqkQifbyqZF7GGHW8zS
Resolving DID "did:ebsi:zyc8qqkQifbyqZF7GGHW8zS"...
Results:
DID resolved: "did:ebsi:zyc8qqkQifbyqZF7GGHW8zS"
DID document (below, JSON):
...
API
curl -X POST "https://core.ssikit.walt.id/v1/did/resolve" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"did\":\"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt\"}"
{
"authentication":[
"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt#38227a5b9f104a72be6b605d8da7544d"
],
"@context":[
"https://www.w3.org/ns/did/v1"
],
"id":"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt",
"verificationMethod":[
{
"controller":"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt",
"id":"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt#38227a5b9f104a72be6b605d8da7544d",
"publicKeyJwk":{
"alg":"ES256K",
"crv":"secp256k1",
"kid":"38227a5b9f104a72be6b605d8da7544d",
"kty":"EC",
"use":"sig",
"x":"-PYAGskggDHO5-LGprwtKG0uB-KObZDb40ZTH_3Ag1E",
"y":"Z0uHycCZW0dWUlHOyW8BDS3ZV3UOFjEvFsSmtT1KJ-k"
},
"type":"Secp256k1VerificationKey2018"
}
]
}
Alternatively, the DID can also be resolved directly using the ESSIF API:
Their swagger interface: https://api.preprod.ebsi.eu/docs/?urls.primaryName=DID%20Registry%20API#/DID%20Registry/get-did-registry-v2-identifier
We'll issue a custom credential based on the schema deltaDAO provided, the issuer being a subject with a did:ebsi key (the one we've just created and registered to EBSI above), and the holder having another key format, we'll use a normal did:key for this demo. You may also mix in other DIDs (e.g. for the verifier), like did:web.
Business as usual:
ssikit did create -m key
curl -X POST "https://core.ssikit.walt.id/v1/did/create" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"method\":\"key\"}"
To try this example with the REST API, see "Via REST (Swagger)".
We'll use the interactive CLI data provider for this template.
CLI
ssikit vc issue -t GaiaxCredential -i did:ebsi:zyc8qqkQifbyqZF7GGHW8zS -s did:key:z6MkwgKrgtL9mvxJLikqsXUNPxSko17bPb5fxvvurcditnX6 --interactive data/vc.json
You'll be able to specify the different fields in the credentialSubject using the CLI-DataProvider (--interactive), you can also test out the normal DataProvider here. The credential will be saved to data/vc.json (as specified).
Issuing a verifiable credential (using template GaiaxCredential)
- Subject information
Legally binding name [deltaDAO AG]: SSI Fabric GmbH
Brand name [deltaDAO]: Walt.ID
Legal registration number [HRB 170364]:
Corporate email address [contact@delta-dao.com]: ...
(By pressing enter, you will accept the default, which is described in the brackets "Name [default]").
Generated Credential: ...
Saved credential to file: data/vc.json
API
curl -X POST "https://signatory.ssikit.walt.id/v1/credentials/issue" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"templateId\":\"GaiaxCredential\",\"config\":{\"issuerDid\":\"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt\",\"subjectDid\":\"did:key:z6MkrtMb2FYe6Wqvw8CXUWSQfuieaDBsHY4fhrchmpVw7zYW\",\"proofType\":\"LD_PROOF\"}}"
{
"@context" : [ "https://www.w3.org/2018/credentials/v1" ],
"credentialSubject" : {
"DNSpublicKey" : "04:8B:CA:33:B1:A1:3A:69:E6:A2:1E:BE:CB:4E:DF:75:A9:70:8B:AA:51:83:AB:A1:B0:5A:35:20:3D:B4:29:09:AD:67:B4:12:19:3B:6A:B5:7C:12:3D:C4:CA:DD:A5:E0:DA:05:1E:5E:1A:4B:D1:F2:BA:8F:07:4D:C7:B6:AA:23:46",
"brandName" : "deltaDAO",
"commercialRegister" : {
"countryName" : "Germany",
"locality" : "Hamburg",
"organizationName" : "Amtsgericht Hamburg (-Mitte)",
"organizationUnit" : "Registergericht",
"postalCode" : "20355",
"streetAddress" : "Caffamacherreihe 20"
},
"corporateEmailAddress" : "contact@delta-dao.com",
"ethereumAddress" : {
"id" : "0x4C84a36fCDb7Bc750294A7f3B5ad5CA8F74C4A52"
},
"id" : "did:key:z6MkrtMb2FYe6Wqvw8CXUWSQfuieaDBsHY4fhrchmpVw7zYW",
...
Using the credential we've just generated, we will generate a Verifiable Presentation (VP) as a holder (with the did:key).
CLI
ssikit vc present --holder-did did:key:z6MkwgKrgtL9mvxJLikqsXUNPxSko17bPb5fxvvurcditnX6 data/vc.json
Creating a verifiable presentation for DID "did:key:z6MkwgKrgtL9mvxJLikqsXUNPxSko17bPb5fxvvurcditnX6"...
Using 1 VC:
- data/vc.json (GaiaxCredential)
Results:
Verifiable presentation generated for holder DID: "did:key:z6MkwgKrgtL9mvxJLikqsXUNPxSko17bPb5fxvvurcditnX6" Verifiable presentation document (below, JSON): ... Verifiable presentation was saved to file: "data/vc/presented/vp-1635188200959.json"
API
curl -X POST "http://localhost:7002/credentials/present" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"vcs\":[\"{\\\"@context\\\" : [\\\"https://www.w3.org/2018/credentials/v1\\\"], \\\"credentialSchema\\\" : {\\\"id\\\" : \\\"https://api.preprod.ebsi.eu/trusted-schemas-registry/v1/schemas/0xbf78fc08a7a9f28f5479f58dea269d3657f54f13ca37d380cd4e92237fb691dd\\\", \\\"type\\\" : \\\"JsonSchemaValidator2018\\\"}, \\\"credentialStatus\\\" : {\\\"id\\\" : \\\"https://essif.europa.eu/status/education#higherEducation#392ac7f6-399a-437b-a268-4691ead8f176\\\", \\\"type\\\" : \\\"CredentialStatusList2020\\\"}, \\\"credentialSubject\\\" : {\\\"awardingOpportunity\\\" : {\\\"awardingBody\\\" : {\\\"eidasLegalIdentifier\\\" : \\\"Unknown\\\", \\\"homepage\\\" : \\\"https://leaston.bcdiploma.com/\\\", \\\"id\\\" : \\\"did:ebsi:2A9BZ9SUe6BatacSpvs1V5CdjHvLpQ7bEsi2Jb6LdHKnQxaN\\\", \\\"preferredName\\\" : \\\"Leaston University\\\", \\\"registration\\\" : \\\"0597065J\\\"}, \\\"endedAtTime\\\" : \\\"2020-06-26T00:00:00Z\\\", \\\"id\\\" : \\\"https://leaston.bcdiploma.com/law-economics-management#AwardingOpportunity\\\", \\\"identifier\\\" : \\\"https://certificate-demo.bcdiploma.com/check/87ED2F2270E6C41456E94B86B9D9115B4E35BCCAD200A49B846592C14F79C86BV1Fnbllta0NZTnJkR3lDWlRmTDlSRUJEVFZISmNmYzJhUU5sZUJ5Z2FJSHpWbmZZ\\\", \\\"location\\\" : \\\"FRANCE\\\", \\\"startedAtTime\\\" : \\\"2019-09-02T00:00:00Z\\\"}, \\\"dateOfBirth\\\" : \\\"1993-04-08\\\", \\\"familyName\\\" : \\\"DOE\\\", \\\"givenNames\\\" : \\\"Jane\\\", \\\"gradingScheme\\\" : {\\\"id\\\" : \\\"https://leaston.bcdiploma.com/law-economics-management#GradingScheme\\\", \\\"title\\\" : \\\"Lower Second-Class Honours\\\"}, \\\"id\\\" : \\\"did:ebsi:2AEMAqXWKYMu1JHPAgGcga4dxu7ThgfgN95VyJBJGZbSJUtp\\\", \\\"identifier\\\" : \\\"0904008084H\\\", \\\"learningAchievement\\\" : {\\\"additionalNote\\\" : [\\\"DISTRIBUTION MANAGEMENT\\\"], \\\"description\\\" : \\\"MARKETING AND SALES\\\", \\\"id\\\" : \\\"https://leaston.bcdiploma.com/law-economics-management#LearningAchievment\\\", \\\"title\\\" : \\\"MASTERS LAW, ECONOMICS AND MANAGEMENT\\\"}, \\\"learningSpecification\\\" : {\\\"ectsCreditPoints\\\" : 120, \\\"eqfLevel\\\" : 7, \\\"id\\\" : \\\"https://leaston.bcdiploma.com/law-economics-management#LearningSpecification\\\", \\\"iscedfCode\\\" : [\\\"7\\\"], \\\"nqfLevel\\\" : [\\\"7\\\"]}}, \\\"evidence\\\" : {\\\"documentPresence\\\" : [\\\"Physical\\\"], \\\"evidenceDocument\\\" : [\\\"Passport\\\"], \\\"id\\\" : \\\"https://essif.europa.eu/tsr-va/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d5678\\\", \\\"subjectPresence\\\" : \\\"Physical\\\", \\\"type\\\" : [\\\"DocumentVerification\\\"], \\\"verifier\\\" : \\\"did:ebsi:2962fb784df61baa267c8132497539f8c674b37c1244a7a\\\"}, \\\"expirationDate\\\" : \\\"2022-08-31T00:00:00Z\\\", \\\"id\\\" : \\\"education#higherEducation#392ac7f6-399a-437b-a268-4691ead8f176\\\", \\\"issuanceDate\\\" : \\\"2021-08-31T00:00:00Z\\\", \\\"issuer\\\" : \\\"did:ebsi:2A9BZ9SUe6BatacSpvs1V5CdjHvLpQ7bEsi2Jb6LdHKnQxaN\\\", \\\"validFrom\\\" : \\\"2021-08-31T00:00:00Z\\\", \\\"type\\\" : [\\\"VerifiableCredential\\\", \\\"VerifiableAttestation\\\", \\\"VerifiableDiploma\\\"]}\"],\"holderDid\":\"did:key:z6MkiiZXErau1mJa98sAD56irpa9oEgvPUNkMYoyhMfLjCAq\",\"verifierDid\":\"did:key:z6MkiiZXErau1mJa98sAD56irpa9oEgvPUNkMYoyhMfLjCAq\"}"
{
"@context" : [ "https://www.w3.org/2018/credentials/v1" ],
"holder" : "did:key:z6MkiiZXErau1mJa98sAD56irpa9oEgvPUNkMYoyhMfLjCAq",
"id" : "urn:uuid:1529ecbd-6a4e-406f-97ed-f628c16d63ef",
"verifiableCredential" : [ {
"@context" : [ "https://www.w3.org/2018/credentials/v1" ],
"credentialSchema" : {
"id" : "https://api.preprod.ebsi.eu/trusted-schemas-registry/v1/schemas/0xbf78fc08a7a9f28f5479f58dea269d3657f54f13ca37d380cd4e92237fb691dd",
"type" : "JsonSchemaValidator2018"
},
"credentialStatus" : {
"id" : "https://essif.europa.eu/status/education#higherEducation#392ac7f6-399a-437b-a268-4691ead8f176",
"type" : "CredentialStatusList2020"
},
"credentialSubject" : {
"awardingOpportunity" : {
"awardingBody" : {
"eidasLegalIdentifier" : "Unknown",
"homepage" : "https://leaston.bcdiploma.com/",
"id" : "did:ebsi:2A9BZ9SUe6BatacSpvs1V5CdjHvLpQ7bEsi2Jb6LdHKnQxaN",
"preferredName" : "Leaston University",
"registration" : "0597065J"
},
"endedAtTime" : "2020-06-26T00:00:00Z",
"id" : "https://leaston.bcdiploma.com/law-economics-management#AwardingOpportunity",
"identifier" : "https://certificate-demo.bcdiploma.com/check/87ED2F2270E6C41456E94B86B9D9115B4E35BCCAD200A49B846592C14F79C86BV1Fnbllta0NZTnJkR3lDWlRmTDlSRUJEVFZISmNmYzJhUU5sZUJ5Z2FJSHpWbmZZ",
"location" : "FRANCE",
"startedAtTime" : "2019-09-02T00:00:00Z"
},
"dateOfBirth" : "1993-04-08",
"familyName" : "DOE",
"givenNames" : "Jane",
"gradingScheme" : {
"id" : "https://leaston.bcdiploma.com/law-economics-management#GradingScheme",
"title" : "Lower Second-Class Honours"
},
"id" : "did:ebsi:2AEMAqXWKYMu1JHPAgGcga4dxu7ThgfgN95VyJBJGZbSJUtp",
"identifier" : "0904008084H",
"learningAchievement" : {
"additionalNote" : [ "DISTRIBUTION MANAGEMENT" ],
"description" : "MARKETING AND SALES",
"id" : "https://leaston.bcdiploma.com/law-economics-management#LearningAchievment",
"title" : "MASTERS LAW, ECONOMICS AND MANAGEMENT"
},
"learningSpecification" : {
"ectsCreditPoints" : 120,
"eqfLevel" : 7,
"id" : "https://leaston.bcdiploma.com/law-economics-management#LearningSpecification",
"iscedfCode" : [ "7" ],
"nqfLevel" : [ "7" ]
}
},
"evidence" : {
"documentPresence" : [ "Physical" ],
"evidenceDocument" : [ "Passport" ],
"id" : "https://essif.europa.eu/tsr-va/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d5678",
"subjectPresence" : "Physical",
"type" : [ "DocumentVerification" ],
"verifier" : "did:ebsi:2962fb784df61baa267c8132497539f8c674b37c1244a7a"
},
"expirationDate" : "2022-08-31T00:00:00Z",
"id" : "education#higherEducation#392ac7f6-399a-437b-a268-4691ead8f176",
"issuanceDate" : "2021-08-31T00:00:00Z",
"issuer" : "did:ebsi:2A9BZ9SUe6BatacSpvs1V5CdjHvLpQ7bEsi2Jb6LdHKnQxaN",
"validFrom" : "2021-08-31T00:00:00Z",
"type" : [ "VerifiableCredential", "VerifiableAttestation", "VerifiableDiploma" ]
} ],
"type" : [ "VerifiablePresentation" ],
"proof" : {
"type" : "Ed25519Signature2018",
"creator" : "did:key:z6MkiiZXErau1mJa98sAD56irpa9oEgvPUNkMYoyhMfLjCAq",
"created" : "2021-12-02T22:26:45Z",
"domain" : "https://api.preprod.ebsi.eu",
"nonce" : "62dd4f6d-34c7-4604-84b2-86b4b93c5966",
"proofPurpose" : "authentication",
"verificationMethod" : "z6MkiiZXErau1mJa98sAD56irpa9oEgvPUNkMYoyhMfLjCAq#z6MkiiZXErau1mJa98sAD56irpa9oEgvPUNkMYoyhMfLjCAq",
"jws" : "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFZERTQSJ9..DxyqIYfdNsqD04zANrMstQp8IUbXE0o7h92hqQ7z7jbEOrbkTQqsHLOAM1hpscavx550hK6TCC975LWbxF3IBw"
}
}CLI
ssikit vc verify data/vc/presented/vp-1635188200959.json -p SignaturePolicy -p JsonSchemaPolicy -p TrustedIssuerDidPolicy
Verifying from file data/vc/presented/vp-1635188200959.json...
Results:
SignaturePolicy: true
JsonSchemaPolicy: true
TrustedIssuerDidPolicy: true
Verified: true
API
Verify:
curl -X POST "https://auditor.ssikit.walt.id/v1/verify?policyList=SignaturePolicy%2CJsonSchemaPolicy%2CTrustedIssuerDidPolicy" -H "accept: application/json" -H "Content-Type: text/plain" -d "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"credentialSubject\":{\"DNSpublicKey\":\"04:8B:CA:33:B1:A1:3A:69:E6:A2:1E:BE:CB:4E:DF:75:A9:70:8B:AA:51:83:AB:A1:B0:5A:35:20:3D:B4:29:09:AD:67:B4:12:19:3B:6A:B5:7C:12:3D:C4:CA:DD:A5:E0:DA:05:1E:5E:1A:4B:D1:F2:BA:8F:07:4D:C7:B6:AA:23:46\",\"brandName\":\"deltaDAO\",\"commercialRegister\":{\"countryName\":\"Germany\",\"locality\":\"Hamburg\",\"organizationName\":\"Amtsgericht Hamburg (-Mitte)\",\"organizationUnit\":\"Registergericht\",\"postalCode\":\"20355\",\"streetAddress\":\"Caffamacherreihe 20\"},\"corporateEmailAddress\":\"contact@delta-dao.com\",\"ethereumAddress\":{\"id\":\"0x4C84a36fCDb7Bc750294A7f3B5ad5CA8F74C4A52\"},\"id\":\"did:key:z6MkrtMb2FYe6Wqvw8CXUWSQfuieaDBsHY4fhrchmpVw7zYW\",\"individualContactLegal\":\"legal@delta-dao.com\",\"individualContactTechnical\":\"support@delta-dao.com\",\"jurisdiction\":\"Germany\",\"legalForm\":\"Stock Company\",\"legalRegistrationNumber\":\"HRB 170364\",\"legallyBindingAddress\":{\"countryName\":\"Germany\",\"locality\":\"Hamburg\",\"postalCode\":\"22303\",\"streetAddress\":\"Geibelstr. 46B\"},\"legallyBindingName\":\"deltaDAO AG\",\"trustState\":\"trusted\",\"webAddress\":{\"url\":\"https://www.delta-dao.com/\"}},\"id\":\"identity#verifiableID#e378ba65-962f-49b7-8525-b3685f2255c5\",\"issuanceDate\":\"2020-08-24T14:13:44Z\",\"issuer\":\"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt\",\"type\":[\"VerifiableCredential\",\"GaiaxCredential\"],\"proof\":{\"type\":\"EcdsaSecp256k1Signature2019\",\"creator\":\"did:ebsi:zrgUxYjGLSBz2tYW75RUtbt\",\"created\":\"2021-11-09T20:30:01Z\",\"domain\":\"https://api.preprod.ebsi.eu\",\"nonce\":\"5a51cab7-8b8c-4781-8e77-f6fb7cbca30d\",\"jws\":\"eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NksifQ..3eDA5x-M8FcqO05LiL1lq6SHNhzlcFJIIQlEQZ3T8weBGGLngs_CBnMSJtFffbOvwtJRemskdaqVLuA4gghULw\"}}"
{
"overallStatus": true,
"policyResults": {
"SignaturePolicy": true,
"JsonSchemaPolicy": true,
"TrustedIssuerDidPolicy": true
}
}curl -X PUT "http://localhost:7002/credentials/myvc123" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"@context\":[\"https://www.w3.org/2018/credentials/v1\"],\"credentialSchema\":{\"id\":\"https://essif.europa.eu/trusted-schemas-registry/v1/schemas/to_be_obtained_after_registration_of_the_schema\",\"type\":\"JsonSchemaValidator2018\"},\"credentialStatus\":{\"id\":\"https://essif.europa.eu/status/education#higherEducation#51e42fda-cb0a-4333-b6a6-35cb147e1a88\",\"type\":\"CredentialsStatusList2020\"},\"credentialSubject\":{\"awardingOpportunity\":{\"awardingBody\":{\"eidasLegalIdentifier\":\"Unknown\",\"homepage\":\"https://leaston.bcdiploma.com/\",\"id\":\"did:ebsi:2LGKvDMrNUPR6FhSNrXzQQ1h295zr4HwoX9UqvwAsenSKHe9\",\"preferredName\":\"Leaston University\",\"registration\":\"0597065J\"},\"endedAtTime\":\"2020-11-03T00:00:00Z\",\"id\":\"https://leaston.bcdiploma.com/law-economics-management#AwardingOpportunity\",\"identifier\":\"https://certificate-demo.bcdiploma.com/check/87ED2F2270E6C41456E94B86B9D9115B4E35BCCAD200A49B846592C14F79C86BV1Fnbllta0NZTnJkR3lDWlRmTDlSRUJEVFZISmNmYzJhUU5sZUJ5Z2FJSHpWbmZZ\",\"location\":\"FRANCE\",\"startedAtTime\":\"Unknown\"},\"dateOfBirth\":\"1993-04-08\",\"familyName\":\"DOE\",\"givenNames\":\"Jane\",\"gradingScheme\":{\"id\":\"https://leaston.bcdiploma.com/law-economics-management#GradingScheme\",\"title\":\"Lower Second-Class Honours\"},\"id\":\"did:ebsi:22AhtW7XMssv7es4YcQTdV2MCM3c8b1VsiBfi5weHsjcCY9o\",\"identifier\":\"0904008084H\",\"learningAchievement\":{\"additionalNote\":[\"DISTRIBUTION MANAGEMENT\"],\"description\":\"MARKETING AND SALES\",\"id\":\"https://leaston.bcdiploma.com/law-economics-management#LearningAchievment\",\"title\":\"MASTERS LAW, ECONOMICS AND MANAGEMENT\"},\"learningSpecification\":{\"ECTSCreditPoints\":120,\"EQFLevel\":7,\"ISCEDFCode\":[\"7\"],\"NQFLevel\":[\"7\"],\"id\":\"https://leaston.bcdiploma.com/law-economics-management#LearningSpecification\"}},\"id\":\"education#higherEducation#51e42fda-cb0a-4333-b6a6-35cb147e1a88\",\"issuanceDate\":\"2020-11-03T00:00:00Z\",\"issuer\":\"did:ebsi:2LGKvDMrNUPR6FhSNrXzQQ1h295zr4HwoX9UqvwAsenSKHe9\",\"validFrom\":\"2020-11-03T00:00:00Z\",\"type\":[\"VerifiableCredential\",\"VerifiableAttestation\",\"Europass\"]}"