Open Badges 3.0 credential samples, standards, and recommendations for MIT Learn course certificates
Links to signed versions of the credentials, along with QR codes for each link, are available here. These examples would be signed by the issuer and downloaded to be manually added to a mobile wallet like the LCW, although not issued to the wallet specifically.
You can use those links to open the credentials in Verifier Plus or add them to the Learner Credential Wallet.
The JSON below is an example of an open badge for a course which we'll call 'courseCertificate' (the raw file of which can also found here). Other examples of open badges can be found here.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
"https://w3id.org/security/suites/ed25519-2020/v1"
],
"id": "urn:uuid:19281fe8-90d2-4eao-a9da-67b188898a6c",
"type": [
"VerifiableCredential",
"OpenBadgeCredential"
],
"issuer": {
"id": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q",
"type": [
"Profile"
],
"name": "MIT Learn",
"image": {
"id": "https://github.com/digitalcredentials/test-files/assets/206059/01eca9f5-a508-40ac-9dd5-c12d11308894",
"type": "Image",
"caption": "MIT Learn logo"
}
},
"image": {
"id": "https://github.com/digitalcredentials/test-files/assets/206059/01eca9f5-a508-40ac-9dd5-c12d11308894",
"type": "Image",
"caption": "MIT Learn Certificate logo"
},
"validFrom": "2025-02-24T00:00:00Z",
"name": "Foundations of Universal AI",
"description": "Course Certificate in Foundations of Universal AI.",
"credentialSubject": {
"id": "did:key:093093",
"type": [
"AchievementSubject"
],
"activityStartDate": "2023-03-01T00:00:00Z",
"activityEndDate": "2025-02-24T00:00:00Z",
"identifier": [
{
"type": "IdentityObject",
"identityHash": "Lucas Delisle-Doray",
"identityType": "name",
"hashed": false,
"salt": "not-used"
}
],
"creditsEarned": 20,
"achievement": {
"id": "https://something.org/theCourse",
"achievementType": "Course",
"type": [
"Achievement"
],
"criteria": {
"narrative": "If you wanted to add some kind of criteria, e.g. a list of courses or modules, etc."
},
"description": "Lucas Delisle-Doray has successfully completed all modules and earned a Course Certificate in Foundations of Universal AI.",
"name": "Foundations of Universal AI"
}
},
"proof": [
{
"type": "DataIntegrityProof",
"created": "2025-09-11T19:04:15Z",
"verificationMethod": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q#z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q",
"cryptosuite": "eddsa-rdfc-2022",
"proofPurpose": "assertionMethod",
"proofValue": "zngzEHNaHQJV3dsRBS3pHg8gauCJ9TS4Jg2dEWoLdRHyFodTEszgKW9AjiLHhHHJezyXdNtNxBpQcHuh754n9cAX"
},
{
"type": "Ed25519Signature2020",
"created": "2025-09-11T19:04:15Z",
"verificationMethod": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q#z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q",
"proofPurpose": "assertionMethod",
"proofValue": "z2Bd6qucfs93pbhFViRPkVPKceLLuvS2K9rzqFSJMMz7sJNma2owVhmqHWRwfBMat6iXMgvDoykYaYg24GMpFbWq4"
}
]
}
The verifiable credential (VC) above is composed of three parts: Claims, which are the actual statements about the subject (e.g., a driver's license); Proofs, which are cryptographic signatures from the issuer to ensure the claim's integrity and authenticity; and Metadata, which contains information about the credential itself, including its type, issuer, and expiration date.
This particular VC (and all other examples provided in this documentation) are Open Badge VC's using specification version 3.0, which we'll refer to as OBV3 VC's.
OBV3 VC's are digital, portable, and verifiable credentials that represent a specific achievement, skill, or competency, containing rich metadata about the achievement, issuer, and criteria, and which can be stored in a digital wallet for easy sharing and verification.
The DCC recommends using the Open Badges 3.0 specification. Open Badges 3.0 is compatible with W3C Verifiable Credentials, but it has its own requirements and recommendations to support education credentials.
The following Open Badges 3.0 properties are displayed in the DCC's Learner Credential Wallet and Verifier Plus.
Property | Description | Required? | More Info |
---|---|---|---|
achievementCredential.context | Specified shared language in the form of URLs | Y | More Info |
achievementCredential.id | Globally unique identifier | N, but recommended | More Info |
achievementCredential.type | Expresses Object type information. For open badges, should specify both "VerifiableCredential" and "OpenBadgeCredential". | Y | More Info |
achievementCredential.issuer | Property for expressing the issuer of a VC. | Y | More Info |
achievementCredential.issuer.type | Must be set to Profile for the Issuer object | Y | More Info |
achievementCredential.issuer.id | Signing DID of the issuer | Y | More Info |
achievementCredential.issuer.name | Name of issuer | N, but recommended | More Info |
achievementCredential.issuer.image | Image information for issuer | N, but recommended | More Info |
achievementCredential.issuer.url | Issuer url | N, but recommended | More Info |
achievementCredential.name | Name of credential | N, but recommended | More Info |
achievementCredential.description | Description of credential | N, but recommended | More Info |
achievementCredential.validFrom | Expresses the date and time when a credential becomes valid | Y | More Info |
achievementCredential.validUntil | Expresses the date and time when a credential ceases to be valid | N, but recommended if credential expires | More Info |
credentialSubject | Of type "AchievementSubject". The recipient of the achievement. | Y | More Info |
credentialSubject.type | Must be "AchievementSubject" | Y | More Info |
credentialSubject.identifier | A collection of information about the recipient of an achievement | N, but recommended | More Info |
credentialSubject.identifier[0].type | Type of Identifier, always "IdentityObject" | Y, if including identifier |
More Info |
credentialSubject.identifier[0].identityHash | Name of earner | Y, if including identifier |
More Info |
credentialSubject.identifier[0].identitytType | The identity type | Y, if including identifier |
More Info |
credentialSubject.identifier[0].hashed | Whether or not the identityHash value is hashed | Y, if including identifier |
More Info |
credentialSubject.identifier[0].salt | If the identityHash is hashed, this should contain the string used to salt the hash. | Y, if including identifier and if hashed = "true" |
More Info |
credentialSubject.achievement | Achievement object | Y | More Info |
credentialSubject.achievement.id | Unambiguous reference to the credential | Y, but not recommended | More Info |
credentialSubject.achievement.type | Type must be “Achievement” | Y | More Info |
credentialSubject.achievement.name | Achievement name | Y | More Info |
credentialSubject.achievement.description | Achievement description | Y | More Info |
credentialSubject.achievement.criteria | Achievement criteria | Y | More Info |
Notes:
- Type of credentialSubject is AchievementSubject, and credentialSubject is under AchievementCredential. OpenBadgeCredential is an alias to AchievementCredential, which is defined under the parent/root level “type". This is why we define the
context
,id
,type
, issuer object, etc., as underachievementCredential
. - Open badges are VC's that are specified by a "type" of Achievement Subject under the credentialSubject. Achievement Subject is the credentialSubject for VCs. Open badges are VC's that are specified by a "type" of Achievement Subject under the credentialSubject. In the example above for an open badge, the credentialSubject will have a type of "AchievementSubject".
- A verifiable credential(VC) MUST contain a credentialSubject property.
- The OBV3 specification is based on the core VC specification, which has different property requirements. Neither the credentialSubject nor id are required for VC's, whereas for the OBV3 specification, credentialSubject IS required, but is is not.
- The value of the credentialSubject property is a set of objects where each object MUST be the subject of one or more claims, which MUST be serialized inside the credentialSubject property. Each object MAY also contain an id property to identify the subject.