Signatory API - For Issuers
Signatory REST API functions.
The Signatory API exposes the "issuance" endpoint, which provides flexible integration possibilities for anyone intending to act as an "Issuer" (i.e. create, sign and issue Verifiable Credentials), as follows:
Credentials - issue credentials
Templates - create and mange credential templates
Revocations - revocation related functions
Credentials
If you're new to VCs, check out the intro section for an overview.
The /v1/credentials/issue endpoint issues a specified credential.
curl -X 'POST' \
'https://signatory.ssikit.walt.id/v1/credentials/issue' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '<request-body>'{
"templateId": "string",
"config":
{
"issuerDid": "string",
"subjectDid": "string",
"verifierDid": "string",
"issuerVerificationMethod": "string",
"proofType": "JWT",
"domain": "string",
"nonce": "string",
"proofPurpose": "string",
"credentialId": "string",
"issueDate": "2022-10-06T18:09:14.570Z",
"validDate": "2022-10-06T18:09:14.570Z",
"expirationDate": "2022-10-06T18:09:14.570Z",
"dataProviderIdentifier": "string",
"ldSignatureType": "string",
"creator": "string",
"ecosystem": "string",
"statusType": "string"
},
"credentialData":
{
"additionalProp1":
{},
"additionalProp2":
{},
"additionalProp3":
{}
}
}The issued credential displayed either in JSON-LD or JWT formatE.g. Issue a UniversityDegree credential in the default JSON-LD format. In case you don't have the DID for the Issuer and or the Holder, you can create one here.
curl -X 'POST' \
'https://signatory.ssikit.walt.id/v1/credentials/issue' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"templateId": "UniversityDegree",
"config":
{
"issuerDid": "did:web:walt.id",
"subjectDid": "did:web:my.domain"
},
"credentialData":
{
"credentialSubject":
{
"degree":
{
"name": "Bachelor of Science and Arts",
"type": "BachelorDegree"
}
}
}
}'{
"templateId": "UniversityDegree",
"config":
{
"issuerDid": "did:web:walt.id",
"subjectDid": "did:web:my.domain"
},
"credentialData":
{
"credentialSubject":
{
"degree":
{
"name": "Bachelor of Science and Arts",
"type": "BachelorDegree"
}
}
}
}{
"@context":
[
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"credentialSubject":
{
"degree":
{
"name": "Bachelor of Science and Arts",
"type": "BachelorDegree"
},
"id": "did:web:my.domain"
},
"id": "urn:uuid:d36986f1-3cc0-4156-b5a4-6d3deab84270",
"issued": "2022-10-07T09:53:41.369913097Z",
"issuer":
{
"id": "did:web:walt.id"
},
"validFrom": "2022-10-07T09:53:41.369917079Z",
"issuanceDate": "2022-10-07T09:53:41.369917079Z",
"type":
[
"VerifiableCredential",
"UniversityDegreeCredential"
],
"proof":
{
"type": "Ed25519Signature2018",
"creator": "did:web:walt.id",
"created": "2022-10-07T09:53:41Z",
"domain": "https://api.preprod.ebsi.eu",
"nonce": "dc2be572-cca4-43dc-9903-0fec1dcf786f",
"jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFZERTQSJ9..7EYkgjNRJ_hh0F5kONnPfrC4PLvg1g82czeANllDngsbk36a8lnHSlwersSqY0tdER4xIe7vbNVzi39C2DZTDQ"
}
}Check out the Issue with status section to learn about how to issue a verifiable credential with a credentialStatus property.
Templates
The currently available template functions are:
list - display the list of Templates
import - import a custom template
load - display the content of the template having the specified
id
List templates
The /v1/templates endpoint returns the list of the available template ids
curl -X 'GET' \
'https://signatory.ssikit.walt.id/v1/templates' \
-H 'accept: application/json'No parameter
[
"string"
]E.g. List the templates
curl -X 'GET' \
'https://signatory.ssikit.walt.id/v1/templates' \
-H 'accept: application/json'[
"DataSelfDescription",
"VerifiableDiploma",
"VerifiableVaccinationCertificate",
"LegalPerson",
"VerifiableAuthorization",
"Europass",
"KybMonoCredential",
"KycCredential",
"VerifiableMandate",
"VerifiablePresentation",
"EuropeanBankIdentity",
"KybCredential",
"VerifiableAttestation",
"OpenBadgeCredential",
"PeerReview",
"DataConsortium",
"ProofOfResidence",
"AmletCredential",
"ParticipantCredential",
"PermanentResidentCard",
"UniversityDegree",
"VerifiableId",
"DataServiceOffering",
"GaiaxCredential",
"Iso27001Certificate"
]Import template
The /v1/templates/{id} endpoint to import your custom credential template
id path parameter (required) -
idof the template, e.g.MyCustomCredential
curl -X 'POST' \
'https://signatory.ssikit.walt.id/v1/templates/{id}' \
-H 'accept: application/json'
-H 'Content-Type: application/json' \
-d '<request-body>'{
"type": [
"VerifiableCredential",
"MyCustomCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"id": "string",
"issuer": {
"id": "string"
},
"issued": "2020-03-10T04:24:12.164Z",
... // custom data in json
}
{
"type": [
"VerifiableCredential",
"MyCustomCredential"
],
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"id": "http://example.gov/credentials/3732",
"issuer": {
"id": "did:example:456"
},
"issued": "2020-03-10T04:24:12.164Z",
"credentialSubject": {
"id": "did:example:123",
"firstName": "",
"lastName": "",
"country": "Austria"
}
}
nullLoad template
The /v1/templates/{id} endpoint displays the content of the template having the parameters:
id path parameter (required) -
idof the template
curl -X 'GET' \
'https://signatory.ssikit.walt.id/v1/templates/{id}' \
-H 'accept: application/json'No parameter
The template content as JSONE.g. Load the template for the id set to UniversityDegree.
curl -X 'GET' \
'https://signatory.ssikit.walt.id/v1/templates/UniversityDegree' \
-H 'accept: application/json'{
"@context":
[
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1"
],
"credentialSubject":
{
"degree":
{
"name": "Bachelor of Science and Arts",
"type": "BachelorDegree"
},
"id": "did:example:123"
},
"id": "http://example.gov/credentials/3732",
"issued": "2020-03-10T04:24:12.164Z",
"issuer":
{
"id": "did:example:456"
},
"type":
[
"VerifiableCredential",
"UniversityDegreeCredential"
]
}Revocations
Refer to Credential Statuses section for more details on verifiable credential revocations.
Last updated
Was this helpful?
