This document summarizes the OpenBadge v3.0 specifications according to IMS Global standards. It will serve as a guide for the implementation of our Python library.
OpenBadges v3.0 is a standard format for representing and verifying digital badges. Version 3.0 is based on W3C Verifiable Credentials and brings several improvements compared to v2.0.
Verifiable Credentials (VCs) are a W3C standard for digital credentials that can be cryptographically verified. They are a core component of OpenBadge v3.0.
- Verifiable Credential: A tamper-evident credential with authorship that can be cryptographically verified
- Issuer: The entity that creates and signs the credential
- Subject: The entity about which claims are made (the recipient of a badge)
- Verifier: Any entity that needs to verify the credential's authenticity
A Verifiable Credential consists of:
- Metadata: Information about the credential itself (ID, type, issuance date, etc.)
- Claims: Statements about the subject (in OpenBadges, this includes the achievement)
- Proof: Cryptographic proof that makes the credential verifiable
The verification of a Verifiable Credential involves:
- Checking the credential's signature using the issuer's public key
- Verifying that the credential hasn't been revoked or expired
- Validating that the credential conforms to the expected schema
In PyOpenBadges, the OpenBadgeCredential
model implements the Verifiable Credential standard, with the proof
field containing the cryptographic signature.
An OpenBadge v3.0 badge consists of several interconnected elements:
- Profile (formerly Issuer): The entity that issues the badge
- Achievement (formerly BadgeClass): The badge definition
- Credential (formerly Assertion): The attribution of a specific badge to a recipient
- Endorsement: A recommendation or validation by a third party
These elements are represented in JSON-LD format (JSON with Linked Data context).
Represents the entity that issues badges.
{
"@context": "https://w3id.org/openbadges/v3",
"id": "https://example.org/issuers/1",
"type": "Profile",
"name": "Organization name",
"url": "https://example.org",
"email": "contact@example.org",
"description": "Organization description",
"image": {
"id": "https://example.org/logo.png",
"type": "Image"
}
}
id
: Unique URI that identifies the issuertype
: Must include "Profile"name
: Human-readable name of the issuer
url
: Issuer's websiteemail
: Contact emaildescription
: Description of the issuerimage
: Image/logo of the issuer
Defines a specific type of badge that can be awarded.
{
"@context": "https://w3id.org/openbadges/v3",
"id": "https://example.org/badges/1",
"type": ["Achievement"],
"name": "Badge name",
"description": "Detailed description of the badge",
"criteria": {
"narrative": "Criteria for earning this badge"
},
"image": {
"id": "https://example.org/badges/1/image",
"type": "Image"
},
"issuer": {
"id": "https://example.org/issuers/1",
"type": "Profile"
}
}
id
: Unique URI that identifies the achievementtype
: Must include "Achievement"name
: Human-readable name of the badgeissuer
: Reference to the issuer (Profile)
description
: Description of the badgecriteria
: Conditions for earning the badgeimage
: Image representing the badge
Represents the award of a specific badge to a recipient.
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://w3id.org/openbadges/v3"
],
"id": "https://example.org/assertions/1",
"type": ["VerifiableCredential", "OpenBadgeCredential"],
"issuer": {
"id": "https://example.org/issuers/1",
"type": "Profile"
},
"issuanceDate": "2023-01-01T00:00:00Z",
"credentialSubject": {
"id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
"type": "AchievementSubject",
"achievement": {
"id": "https://example.org/badges/1",
"type": "Achievement"
}
},
"proof": {
"type": "Ed25519Signature2020",
"created": "2023-01-01T00:00:00Z",
"verificationMethod": "https://example.org/issuers/1/keys/1",
"proofPurpose": "assertionMethod",
"proofValue": "..."
}
}
id
: Unique URI that identifies the credentialtype
: Must include "VerifiableCredential" and "OpenBadgeCredential"issuer
: Reference to the issuerissuanceDate
: Date of issuance in ISO formatcredentialSubject
: Information about the recipient and the achievement
proof
: Cryptographic proof of validityexpirationDate
: Expiration date (if applicable)
Recommendation or validation of an element (badge, issuer, assertion) by a third party.
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://w3id.org/openbadges/v3"
],
"id": "https://example.org/endorsements/1",
"type": ["VerifiableCredential", "EndorsementCredential"],
"issuer": {
"id": "https://example.org/endorsers/1",
"type": "Profile"
},
"issuanceDate": "2023-01-02T00:00:00Z",
"credentialSubject": {
"id": "https://example.org/badges/1",
"type": "Achievement",
"endorsementComment": "This badge meets our organization's criteria."
},
"proof": {
"type": "Ed25519Signature2020",
"created": "2023-01-02T00:00:00Z",
"verificationMethod": "https://example.org/endorsers/1/keys/1",
"proofPurpose": "assertionMethod",
"proofValue": "..."
}
}
id
: Unique URI that identifies the endorsementtype
: Must include "VerifiableCredential" and "EndorsementCredential"issuer
: Reference to the issuer of the endorsementissuanceDate
: Date of issuancecredentialSubject
: Endorsed object and comment
Allows associating a badge with external competency frameworks.
{
"targetName": "Framework name",
"targetUrl": "https://example.org/frameworks/1",
"targetDescription": "Framework description",
"targetFramework": "Competency framework",
"targetCode": "CODE123"
}
Evidence elements justifying the award of a badge.
{
"id": "https://example.org/evidence/1",
"type": "Evidence",
"name": "Evidence title",
"description": "Evidence description",
"narrative": "Detailed explanation",
"genre": "Evidence type"
}
OpenBadge v3.0 utilise les mécanismes de vérification des Verifiable Credentials, principalement via des signatures cryptographiques.
- Ed25519Signature2020: Signature EdDSA avec la courbe Ed25519
- RsaSignature2018: Signature RSA
- JsonWebSignature2020: Signature au format JWS
La révocation d'un credential peut être effectuée via plusieurs mécanismes:
- Liste de révocation (status list)
- Vérification du statut via une API
- Utilisation du modèle Verifiable Credentials
- Remplacement du terme "Issuer" par "Profile"
- Remplacement du terme "BadgeClass" par "Achievement"
- Remplacement du terme "Assertion" par "Credential"
- Modèle de sécurité amélioré
- Support de différents types d'identifiants pour les destinataires
- Support de JSON-LD et des contextes
- Validation des données selon le schéma
- Mécanismes de signature et vérification
- Gestion des identifiants
Pour une documentation complète et officielle, veuillez consulter la spécification OpenBadge v3.0 de IMS Global.