Verifiable Credentials

Issue a Verifiable Credential

post

This endpoint issues a Verifiable Credential. As input it takes the list of issuerDid, subjectDid, attributes, and other parameters of the credential to be issued.

Authorizations
Body

Input fields for the creating a Verifiable Credential.

issuerDidstringRequired

DID of the Verifiable Credential issuer. This needs to be a did:cheqd DID.

Example: did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0
subjectDidstringRequired

DID of the Verifiable Credential holder/subject. This needs to be a did:key DID.

Example: did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK
attributesobjectRequired

JSON object containing the attributes to be included in the credential.

Example: {"name":"Bob","gender":"male"}
@contextstring[]Optional

Optional properties to be included in the @context property of the credential.

Example: ["https://schema.org/schema.jsonld","https://veramo.io/contexts/profile/v1"]
typestring[]Optional

Optional properties to be included in the type property of the credential.

Example: ["Person"]
expirationDatestring · date-timeOptional

Optional expiration date according to the <a href=https://www.w3.org/TR/vc-data-model/#expiration> VC Data Model specification.

Example: 2023-06-08T13:49:28.000Z
formatstring · enumOptional

Format of the Verifiable Credential. Defaults to VC-JWT.

Example: jwtPossible values:
termsOfUseobject[]Optional

Terms of use can be utilized by an issuer or a holder to communicate the terms under which a verifiable credential was issued.

Example: {"type":"IssuerPolicy","id":"http://example.com/policies/credential/4","profile":"http://example.com/profiles/credential","prohibition":[{"assigner":"https://example.edu/issuers/14","assignee":"AllVerifiers","target":"http://example.edu/credentials/3732","action":["Archival"]}]}
refreshServiceobject[]Optional

RefreshService property MUST be one or more refresh services that provides enough information to the recipient's software such that the recipient can refresh the verifiable credential.

Example: {"type":"ManualRefreshService2018","id":"https://example.edu/refresh/3732"}
evidenceobject[]Optional

Evidence property MUST be one or more evidence schemes providing enough information for a verifier to determine whether the evidence gathered by the issuer meets its confidence requirements for relying on the credential.

Example: {"type":["DocumentVerification"],"id":"https://example.edu/evidence/f2aeec97-fc0d-42bf-8ca7-0548192d4231","verifier":"https://example.edu/issuers/14","evidenceDocument":"DriversLicense","subjectPresence":"Physical","documentPresence":"Physical","licenseNumber":"123AB4567"}
Responses
200

The request was successful.

application/json
post
POST /credential/issue HTTP/1.1
Host: studio-api.cheqd.net
x-api-key: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 398

"issuerDid='did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0'&subjectDid='did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK'&attributes={'gender':'male','name':'Bob'}&@context=['https://schema.org']&type=['Person']&format='jwt'&credentialStatus={'statusPurpose':'revocation','statusListName':'employee-credentials','statusListIndex':10,'statusListType':'StatusList2021'}"
{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://schema.org",
    "https://veramo.io/contexts/profile/v1"
  ],
  "credentialSubject": {
    "gender": "male",
    "id": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "name": "Bob"
  },
  "credentialStatus": {
    "id": "https://resolver.cheqd.net/1.0/identifiers/did:cheqd:testnet:7c2b990c-3d05-4ebf-91af-f4f4d0091d2e?resourceName=cheqd-suspension-1&resourceType=StatusList2021Suspension#20",
    "statusIndex": 20,
    "statusPurpose": "suspension",
    "type": "StatusList2021Entry"
  },
  "issuanceDate": "2023-06-08T13:49:28.000Z",
  "issuer": {
    "id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0"
  },
  "proof": {
    "jwt": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJkaWQ6Y2hlcWQ6dGVzdG5ldDo3YmY4MWEyMC02MzNjLTRjYzctYmM0YS01YTQ1ODAxMDA1ZTAiLCJuYmYiOjE2ODYyMzIxNjgsInN1YiI6ImRpZDprZXk6ejZNa2hhWGdCWkR2b3REa0w1MjU3ZmFpenRpR2lDMlF0S0xHcGJubkVHdGEyZG9LIiwidmMiOnsiQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiLCJodHRwczovL3NjaGVtYS5vcmciLCJodHRwczovL3ZlcmFtby5pby9jb250ZXh0cy9wcm9maWxlL3YxIl0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImdlbmRlciI6Im1hbGUiLCJuYW1lIjoiQm9iIn0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJQZXJzb24iXX19.wMfdR6RtyAZA4eoWya5Aw97wwER2Cm5Guk780Xw8H9fA3sfudIJeLRLboqixpTchqSbYeA7KbuCTAnLgXTD_Cg",
    "type": "JwtProof2020"
  },
  "type": [
    "VerifiableCredential",
    "Person"
  ]
}

Verify a Verifiable Credential.

post

This endpoint verifies a Verifiable Credential passed to it. As input, it can take the VC-JWT as a string or the entire credential itself.

Authorizations
Query parameters
verifyStatusbooleanOptional

If set to true the verification will also check the status of the credential. Requires the VC to have a credentialStatus property.

Default: false
fetchRemoteContextsbooleanOptional

When dealing with JSON-LD you also MUST provide the proper contexts. Set this to true ONLY if you want the @context URLs to be fetched in case they are a custom context.

Default: false
allowDeactivatedDidbooleanOptional

If set to true allow to verify credential which based on deactivated DID.

Default: false
Body
credentialobjectOptional

Verifiable Credential to be verified as a VC-JWT string or a JSON object.

Responses
200

The request was successful.

application/json
post
POST /credential/verify HTTP/1.1
Host: studio-api.cheqd.net
x-api-key: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 89

"credential={}&policies={'issuanceDate':true,'expirationDate':true,'audience':false}"
{
  "verified": true,
  "polices": {},
  "issuer": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
  "signer": {
    "controller": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0",
    "id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#key-1",
    "publicKeyBase58": "BTJiso1S4iSiReP6wGksSneGfiKHxz9SYcm2KknpqBJt",
    "type": "Ed25519VerificationKey2018"
  }
}

Revoke a Verifiable Credential.

post

This endpoint revokes a given Verifiable Credential. As input, it can take the VC-JWT as a string or the entire credential itself. The StatusList2021 or BitstringStatusList resource should already be setup in the VC and credentialStatus property present in the VC.

Authorizations
Query parameters
listTypestring · enumRequired

The type of Status List.

Possible values:
publishbooleanRequired

Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to false, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.

Default: true
Body
credentialone ofOptional

Verifiable Credential to be revoked as a VC-JWT string or a JSON object.

objectOptional
or
stringOptional
symmetricKeystringOptional

The symmetric key used to encrypt the StatusList2021 DID-Linked Resource. Required if the StatusList2021 DID-Linked Resource is encrypted.

Responses
200

The request was successful.

application/json
post
POST /credential/revoke HTTP/1.1
Host: studio-api.cheqd.net
x-api-key: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 39

"credential={}&symmetricKey='text'"
{
  "revoked": true
}

Suspend a Verifiable Credential.

post

This endpoint suspends a given Verifiable Credential. As input, it can take the VC-JWT as a string or the entire credential itself.

Authorizations
Query parameters
listTypestring · enumRequired

The type of Status List.

Possible values:
publishbooleanOptional

Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to false, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.

Body
credentialone ofOptional

Verifiable Credential to be revoked as a VC-JWT string or a JSON object.

objectOptional
or
stringOptional
symmetricKeystringOptional

The symmetric key used to encrypt the StatusList2021 DID-Linked Resource. Required if the StatusList2021 DID-Linked Resource is encrypted.

Responses
200

The request was successful.

application/json
post
POST /credential/suspend HTTP/1.1
Host: studio-api.cheqd.net
x-api-key: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 39

"credential={}&symmetricKey='text'"
{
  "suspended": true
}

Reinstate a suspended Verifiable Credential.

post

Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to false, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.

Authorizations
Query parameters
listTypestring · enumRequired

The type of Status List.

Possible values:
publishbooleanOptional

Set whether the StatusList2021 or BitstringStatusList resource should be published to the ledger or not. If set to false, the StatusList2021 or BitstringStatusList publisher should manually publish the resource.

Body
credentialone ofOptional

Verifiable Credential to be revoked as a VC-JWT string or a JSON object.

objectOptional
or
stringOptional
symmetricKeystringOptional

The symmetric key used to encrypt the StatusList2021 DID-Linked Resource. Required if the StatusList2021 DID-Linked Resource is encrypted.

Responses
200

The request was successful.

application/json
post
POST /credential/reinstate HTTP/1.1
Host: studio-api.cheqd.net
x-api-key: YOUR_API_KEY
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 39

"credential={}&symmetricKey='text'"
{
  "unsuspended": true
}

Was this helpful?