Credential Schemas
The mwen.io issuer ships with 11 pre-built credential schema templates covering all four issuer verticals. Each schema defines the set of claims that can be included in a credential of that type, the vct URI that identifies it, and whether issued credentials are revocable.
All 11 schemas use SD-JWT-VC format and all support revocation via W3C Bitstring Status List v1.0.
Schema overview
Government (4 schemas)
| Schema ID | Display name | vct URI |
|---|---|---|
national-id-v1 | National ID | https://mwen.io/schemas/national-id/v1 |
passport-v1 | Passport | https://mwen.io/schemas/passport/v1 |
drivers-license-v1 | Driver's Licence | https://mwen.io/schemas/drivers-license/v1 |
residence-permit-v1 | Residence Permit | https://mwen.io/schemas/residence-permit/v1 |
Employer (3 schemas)
| Schema ID | Display name | vct URI |
|---|---|---|
employee-identity-v1 | Employee Identity | https://mwen.io/schemas/employee-identity/v1 |
department-access-v1 | Department Access | https://mwen.io/schemas/department-access/v1 |
role-credential-v1 | Role Credential | https://mwen.io/schemas/role-credential/v1 |
Academic (2 schemas)
| Schema ID | Display name | vct URI |
|---|---|---|
university-diploma-v1 | University Diploma | https://mwen.io/schemas/university-diploma/v1 |
academic-transcript-v1 | Academic Transcript | https://mwen.io/schemas/academic-transcript/v1 |
Learning Platform (2 schemas)
| Schema ID | Display name | vct URI |
|---|---|---|
course-completion-v1 | Course Completion | https://mwen.io/schemas/course-completion/v1 |
professional-certification-v1 | Professional Certification | https://mwen.io/schemas/professional-certification/v1 |
Schema claim reference
national-id-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | Legal first name |
family_name | string | Yes | Legal last name |
birth_date | string | Yes | ISO 8601 (e.g. 1990-05-15) |
national_id_number | string | Yes | Government-assigned identifier |
nationality | string | Yes | ISO 3166-1 alpha-2 (e.g. TT) |
address | object | No | { street, city, country } |
passport-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | |
family_name | string | Yes | |
birth_date | string | Yes | ISO 8601 |
passport_number | string | Yes | |
nationality | string | Yes | ISO 3166-1 alpha-2 |
expiry_date | string | Yes | ISO 8601 |
place_of_birth | string | No |
drivers-license-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | |
family_name | string | Yes | |
birth_date | string | Yes | ISO 8601 |
licence_number | string | Yes | |
categories | string[] | Yes | e.g. ["B", "C1"] |
expiry_date | string | Yes | ISO 8601 |
issue_date | string | No | ISO 8601 |
residence-permit-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | |
family_name | string | Yes | |
birth_date | string | Yes | ISO 8601 |
permit_number | string | Yes | |
permit_type | string | Yes | e.g. "indefinite_leave_to_remain" |
valid_from | string | Yes | ISO 8601 |
valid_until | string | No | ISO 8601; omit for indefinite |
nationality | string | Yes | ISO 3166-1 alpha-2 |
employee-identity-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | |
family_name | string | Yes | |
employee_id | string | Yes | Internal employee identifier |
department | string | Yes | |
job_title | string | Yes | |
start_date | string | Yes | ISO 8601 |
email | string | No | Work email address |
department-access-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
employee_id | string | Yes | |
department | string | Yes | |
access_level | string | Yes | e.g. "read", "write", "admin" |
valid_until | string | No | ISO 8601; omit for indefinite |
role-credential-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
employee_id | string | Yes | |
job_title | string | Yes | |
department | string | Yes | |
permissions | string[] | No | e.g. ["hr:read", "finance:read"] |
university-diploma-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | |
family_name | string | Yes | |
student_id | string | Yes | |
institution | string | Yes | Full institution name |
degree | string | Yes | e.g. "Bachelor of Science" |
major | string | Yes | |
graduation_date | string | Yes | ISO 8601 |
honours | string | No | e.g. "First Class" |
academic-transcript-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
given_name | string | Yes | |
family_name | string | Yes | |
student_id | string | Yes | |
institution | string | Yes | |
courses | object[] | Yes | Array of { code, title, grade, credits } |
gpa | number | No | |
graduation_date | string | No | ISO 8601 |
course-completion-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
learner_id | string | Yes | Platform-assigned learner identifier |
course_id | string | Yes | |
course_title | string | Yes | |
completion_date | string | Yes | ISO 8601 |
score | number | No | Percentage score (0–100) |
issuer_platform | string | Yes | Name of the learning platform |
professional-certification-v1
| Claim | Type | Required | Notes |
|---|---|---|---|
learner_id | string | Yes | |
certification_id | string | Yes | |
certification_title | string | Yes | |
awarded_date | string | Yes | ISO 8601 |
expiry_date | string | No | ISO 8601; omit for non-expiring |
issuer_platform | string | Yes |
Selecting the right schema
Use the schema whose claims most closely match the credential you want to issue. You do not need to populate every optional field.
If none of the 11 templates fit your use case, contact your platform administrator about custom schema support.
Using schemas via the API
When creating a credential offer via the API, reference the schema by its ID in credentialConfigurationId:
curl -X POST https://issuer.yourorg.com/api/offers \
-H "Authorization: Bearer mk_live_<api-key>" \
-H "Content-Type: application/json" \
-d '{
"credentialConfigurationId": "course-completion-v1",
"claims": {
"learner_id": "user-123",
"course_id": "intro-python",
"course_title": "Introduction to Python",
"completion_date": "2026-03-10",
"score": 94,
"issuer_platform": "LearnCo"
}
}'
Related pages
- Issuer Verticals — which schemas belong to which vertical
- API Key Management — creating offers via the API
- Revocation — revoking issued credentials