Skip to main content

Overview

A presentation template specifies what credentials and attributes you want to verify. The type field in the template must match the type URI from the issuing partner’s credential template — this is how the system knows which credentials to request from the youth’s wallet.
The type field is the bridge between issuers and verifiers. It must be the full URI from the issuer’s credential template response (e.g. https://didx.co.za/vct/didx/web-dev-completion-v1), not the short name used during template creation. Coordinate with the issuing partner to obtain this URI.

Endpoint

POST https://test.didxtech.com/me-creds/api/templates/presentations

Request

curl -X POST "https://test.didxtech.com/me-creds/api/templates/presentations" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Web Development Verification",
    "description": "Verify that a candidate completed the Umuzi web development programme",
    "credentials": [
      {
        "name": "Web Development Completion",
        "description": "Umuzi web development programme credential",
        "type": "https://didx.co.za/vct/didx/web-dev-completion-v1",
        "attributes": {
          "programmeName": {
            "type": "string"
          },
          "completionDate": {
            "type": "string"
          },
          "fullName": {
            "type": "string"
          }
        }
      }
    ]
  }'

Request Body

FieldTypeDescription
namestringName for this presentation template
descriptionstringDescription of what this template verifies
credentialsarrayList of credential types to request
credentials[].typestringMust match the type URI from the issuer’s credential template
credentials[].attributesobjectThe specific attributes to request from the credential

Requesting Specific Attributes

You only need to list the attributes you want to verify. In the example above, the employment provider requests programmeName, completionDate, and fullName — but not skillsCovered or assessmentScore. This keeps the request minimal and respects youth privacy. If an attribute was marked alwaysDisclosed: true by the issuer, it will always be included regardless. Attributes marked alwaysDisclosed: false are shared only if the youth consents.

Response

HTTP 200 OK
{
  "data": {
    "name": "Web Development Verification",
    "description": "Verify that a candidate completed the Umuzi web development programme",
    "createdAt": "2025-02-20T11:27:37.051Z",
    "updatedAt": "2025-02-20T11:27:37.051Z",
    "id": "cm2ytsdid009u4ke3t30aiuvc",
    "credentials": [
      {
        "name": "Web Development Completion",
        "description": "Umuzi web development programme credential",
        "format": "sd-jwt-vc",
        "type": "https://didx.co.za/vct/didx/web-dev-completion-v1",
        "attributes": {
          "programmeName": {
            "type": "string"
          },
          "completionDate": {
            "type": "string"
          },
          "fullName": {
            "type": "string"
          }
        }
      }
    ]
  },
  "links": {
    "self": "https://test.didxtech.com/me-creds/api/templates/presentations/cm2ytsdid009u4ke3t30aiuvc"
  },
  "meta": {
    "version": "1.0"
  }
}

Key Response Fields

FieldDescription
idUnique template identifier — save this for Step 2
formatsd-jwt-vc — credential format with selective disclosure
Presentation templates are reusable. Create one template and use it for all verification requests of that type — save the id for Step 2: Create a Presentation Request.