Create DID-Linked Resource

Create a DID-Linked Resource associated with a cheqd DID over REST API

Using the /resource/create API, users are able to create custom DID-Linked Resources, including:

  1. Schemas

  2. Credential Definitions

  3. Trust Registries

  4. Status Lists

  5. Logos associated with DIDs

  6. Governance files

Step 1: Set up your account

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

Step 2: Create a DID

Before you can create a DID-Linked Resource, you need to create a "parent" DID which is used to link the Resource on-ledger. Use the API in the page below to create a DID:

Step 3. Create your Resource content and save the file locally

DID-Linked Resources can be any type of file or content that is below ~45kb in size.

For the purpose of an example, lets use an AnonCreds schema (JSON file) as the resource:

{
  "name": "degreeSchema",
  "version": "1.5.7",
  "attrNames": ["name", "age", "degree", "grade"]
 }

Save this file locally and call it something like resource.json.

Step 4: Encode the file

Prepare a file with resource and encode it into base64, base64url or hex. On Unix systems, you can use the following command input:

$ base64 -w 0 resource.json
<path-to-the-resource-file>

Expected output:

$ base64 -w 0 resource.json
SGVsbG8sIHdvcmxk

Step 5: Set a consistent name and type

Resources are grouped by having identical names and types. This means if you want to create a new version of the same Resource, you will need to specify the same name and type in the following request.

Step 6: Populate the request inputs and hit the API

Create a DID-Linked Resource.

This endpoint creates a DID-Linked Resource. As input, it can take the DID identifier and the resource parameters via a form, or the fully-assembled resource itself.

POST/resource/create/{did}
Path parameters
did*string

DID identifier to link the resource to.

Body
data*string

Encoded string containing the data to be stored in the DID-Linked Resource.

encoding*enum

Encoding format used to encode the data.

base64urlbase64hex
name*string

Name of DID-Linked Resource.

type*string

Type of DID-Linked Resource. This is NOT the same as the media type, which is calculated automatically ledger-side.

alsoKnownAsarray of object

Optional field to assign a set of alternative URIs where the DID-Linked Resource can be fetched from.

versionstring

Optional field to assign a human-readable version in the DID-Linked Resource.

publicKeyHexsarray of string

List of key references (publicKeys) which will be used for signing the message. The should be in hexadecimal format and placed in the wallet of current user.

Response

The request was successful.

Body
resourceURIstring
Example: "did:cheqd:testnet:55dbc8bf-fba3-4117-855c-1e0dc1d3bb47/resources/398cee0a-efac-4643-9f4c-74c48c72a14b"
resourceCollectionIdstring
Example: "55dbc8bf-fba3-4117-855c-1e0dc1d3bb47"
resourceIdstring
Example: "398cee0a-efac-4643-9f4c-74c48c72a14b"
resourceNamestring
Example: "cheqd-issuer-logo"
resourceTypestring
Example: "CredentialArtwork"
mediaTypestring
Example: "image/png"
resourceVersionstring
Example: "1.0"
checksumstring
Example: "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559"
createdstring
Example: "2021-09-01T12:00:00Z"
nextVersionIdstring
Example: "d4829ac7-4566-478c-a408-b44767eddadc"
previousVersionIdstring
Example: "ad7a8442-3531-46eb-a024-53953ec6e4ff"
Request
const response = await fetch('/resource/create/{did}', {
    method: 'POST',
    headers: {
      "Content-Type": "application/x-www-form-urlencoded"
    },
    body: JSON.stringify({
      "data": "SGVsbG8gV29ybGQ=",
      "encoding": "base64url",
      "name": "ResourceName",
      "type": "TextDocument"
    }),
});
const data = await response.json();
Response
{
  "resourceURI": "did:cheqd:testnet:55dbc8bf-fba3-4117-855c-1e0dc1d3bb47/resources/398cee0a-efac-4643-9f4c-74c48c72a14b",
  "resourceCollectionId": "55dbc8bf-fba3-4117-855c-1e0dc1d3bb47",
  "resourceId": "398cee0a-efac-4643-9f4c-74c48c72a14b",
  "resourceName": "cheqd-issuer-logo",
  "resourceType": "CredentialArtwork",
  "mediaType": "image/png",
  "resourceVersion": "1.0",
  "checksum": "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559",
  "created": "2021-09-01T12:00:00Z",
  "nextVersionId": "d4829ac7-4566-478c-a408-b44767eddadc",
  "previousVersionId": "ad7a8442-3531-46eb-a024-53953ec6e4ff"
}

Last updated