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
| Field | Type | Description |
|---|
name | string | Name for this presentation template |
description | string | Description of what this template verifies |
credentials | array | List of credential types to request |
credentials[].type | string | Must match the type URI from the issuer’s credential template |
credentials[].attributes | object | The 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
| Field | Description |
|---|
id | Unique template identifier — save this for Step 2 |
format | sd-jwt-vc — credential format with selective disclosure |