Links

Create Issuer DID

Create a DID using the did:cheqd method
To create a cheqd DID (did:cheqd) and associated DID Document there are two ways of building the payload for the request:

Step 1: Set up your account

Make sure you have set up your account with Credential Service and are logged in, using our guide below:

Step 2: Create a DID and associated DID Document

Using the /did/create API, users have two options for creating a did:cheqd DID and associated DID Document on-ledger:
  1. 1.
    Filling out a simple form using the application/x-www-url-form-encoded option on the Swagger UI
  2. 2.
    Compiling a DID Document body yourself using the application/json option on the Swagger UI
post
/did/create
Create a DID Document.

Option 1. Choose from a few variables and we will compile the DID for you

This is the easiest way to create DIDs on cheqd and is recommended for users who are not overly familiar with compiling DID Documents.
Using the application/x-www-url-form-encoded option on the Swagger UI, users are able to choose between the following variables to compile your DID:
network (required)
  • "testnet" (recommended for testing)
  • "mainnet" (recommended for production)
methodSpecificIdAlgo (required)
  • "uuid" - this is a Universally Unique Identifier (recommended)
  • "base58btc" - this is an identifier which is commonly used for Hyperledger Indy transactions
verificationMethod / type (required)
  • "Ed25519VerificationKey2018" (recommended)
  • "Ed25519VerificationKey2020"
  • "JSONWebKey2020"
assertionMethod (optional)
  • true (recommended if used for issuing Verifiable Credentials)
  • false
didDocument (optional)
This input field contains either a complete DID document, or an incremental change (diff) to a DID document. For example:
{
"service": [
{
"id": "did:cheqd:testnet:7bf81a20-633c-4cc7-bc4a-5a45801005e0#service-1",
"type": "LinkedDomains",
"serviceEndpoint": [
"https://example.com"
]
}
]
}
From this request, the Credential Service will automatically create and publish a DID and associated DID Document to the ledger and return it as a response.

Option 2. Publish a DID Document body yourself

Instead of generating a DID Document using simple parameters, you can create a fully formatted DID Document yourself. Before, submitting a manually created DID, you will need to have created a set of identity keys to input the key material into the DID document.

Step 1: Create a new keypair

Use the /key/create API to generate a new keypair within the Credential Service key management store. Copy the "publicKeyHex".

Step 2: Utilise the DID Document template helper

To simplify this process of formatting a DID Document using your own keys, we've created a Helper Tool in our DID Registrar here. Simply paste in your publicKeyHex and choose the variables to compile your DID Document template.

Step 3: Paste the response

Within the /did/create JSON payload, paste the response of your DID Document template, with your own signing keys.
Request format:
{
"didDocument": {
"id": "did:cheqd:testnet:0ff9df5d-653b-4f77-a66c-0035abc34d63",
"controller": [
"did:cheqd:testnet:0ff9df5d-653b-4f77-a66c-0035abc34d63"
],
"verificationMethod": [
{
"id": "did:cheqd:testnet:0ff9df5d-653b-4f77-a66c-0035abc34d63#key-1",
"type": "JsonWebKey2020",
"controller": "did:cheqd:testnet:0ff9df5d-653b-4f77-a66c-0035abc34d63",
"publicKeyJwk": {
"crv": "Ed25519",
"kty": "OKP",
"x": "BFSLOxwMJgpmWRtTUuo0JAvz6VXGp4WDDcN0dFfCQKo"
}
}
],
"authentication": [
"did:cheqd:testnet:0ff9df5d-653b-4f77-a66c-0035abc34d63#key-1"
]
}
}

Step 3: Hit execute on the API

Hit execute on the API below to create your did:cheqd DID and associated DID Document.
post
/did/create
Create a DID Document.

List DIDs associated with your account

After creating a DID or multiple DIDs, users can list all the created DIDs associated with their account. Using the /did/list API.
get
/did/list
Fetch DIDs associated with an account.

This endpoint returns the list of DIDs controlled by the account.

Parameters
No parameters
Responses
200: OK
The request was successful.
400: Bad Request
A problem with the input fields has occurred. Additional state information plus metadata may be available in the response body.
401: Unauthorized
Access token is missing or invalid
500: Internal Server Error
An internal error has occurred. Additional state information plus metadata may be available in the response body.