Skip to content

OB 3.0 — certification dossier

Generated by bun run conformance:render — do not edit by hand.

Point-by-point certification submission: every conformance requirement against the literal published schema (conform-ed ADR-0013), with emergent’s implementation status, the spec citation, the modelled schema anchors, and the verifying evidence (emergent ADR-0028).

  • Denominator: pinned Coverage Map docs/conformance/maps/open-badges-v3.0.json (generated 2026-06-22), sha256 d33877372ac633f07ae4068b7f8a98a296769eece02f43e12314d317e0c90024.
  • Requirements: 16/16 done across 3 profile(s) — displayer, host, issuer.
  • Information model: 241/340 literal items modelled.
  • Evidence: each claim cites its [covers:] evidence key; run bun run conformance:prove to resolve these to the proving test names for a submission copy.
Req Level Status Statement Verified by / justification Spec source
OB-DSP-1 MUST ✅ done A displayer MUST verify a presented credential and correctly determine its state — valid, expired, or revoked — before display, and MUST allow a viewer to trigger verification and retrieve the result. ob:3.0:conf:displayer/OB-DSP-1 OB 3.0 Cert §4.2 (Displayer Tests) — https://www.imsglobal.org/spec/ob/v3p0/cert/#displayer
OB-DSP-2 MUST ✅ done A displayer MUST present the badge’s name, description, issuer name, issue date (validFrom) and verification status; and the image when the badge carries one (a baked badge). ob:3.0:conf:displayer/OB-DSP-2 OB 3.0 Cert §4.2 (Displayer — displayed badge data) — https://www.imsglobal.org/spec/ob/v3p0/cert/#displayer
OB-DSP-3 MUST ✅ done A credential MUST be treated as expired when the current date-time is after its validUntil. ob:3.0:conf:displayer/OB-DSP-3 OB 3.0 Cert §4.1 (Credential Status — expired) — https://www.imsglobal.org/spec/ob/v3p0/cert/#status
OB-DSP-4 MUST ✅ done A credential MUST be treated as revoked when credentialStatus is present with type ‘BitstringStatusListEntry’ and statusPurpose ‘revocation’; the credentialStatus.id MUST be the URL of the issuer’s credential status method. ob:3.0:conf:displayer/OB-DSP-4 OB 3.0 Cert §4.1 (Credential Status — revoked) — https://www.imsglobal.org/spec/ob/v3p0/cert/#status
OB-DSP-5 MUST ✅ done A displayer MUST support the Data Integrity proof cryptosuites (eddsa-rdfc-2022, ecdsa-sd-2023) and MUST verify credentials expressed against the W3C VC Data Model 2.0 context. ob:3.0:conf:displayer/OB-DSP-5 OB 3.0 Cert §4.2.1 (Displayer — Supported Proof Mechanisms) — https://www.imsglobal.org/spec/ob/v3p0/cert/#displayer
Modelled schema anchors
  • OB-DSP-1ob:3.0:def:AchievementCredential/proof, ob:3.0:def:AchievementCredential/validUntil, ob:3.0:def:AchievementCredential/credentialStatus
  • OB-DSP-2ob:3.0:def:AchievementCredential/name, ob:3.0:def:AchievementCredential/description, ob:3.0:def:AchievementCredential/issuer, ob:3.0:def:AchievementCredential/validFrom, ob:3.0:def:AchievementCredential/image, ob:3.0:def:AchievementCredential/credentialStatus
  • OB-DSP-3ob:3.0:def:AchievementCredential/validUntil
  • OB-DSP-4ob:3.0:def:AchievementCredential/credentialStatus, ob:3.0:def:CredentialStatus/id, ob:3.0:def:CredentialStatus/type
  • OB-DSP-5ob:3.0:def:AchievementCredential/proof, ob:3.0:def:AchievementCredential/@context
Req Level Status Statement Verified by / justification Spec source
OB-HST-1 MUST ✅ done The getCredentials response MUST return OpenBadgeCredentials, each independently verifiable; credentials signed with the VC-JWT proof format MUST be carried in the compactJwsString list. ob:3.0:conf:host/OB-HST-1 OB 3.0 Cert §5.2–5.3 (Host — Service Provider/Consumer Read) — https://www.imsglobal.org/spec/ob/v3p0/cert/#host
OB-HST-2 MUST ✅ done A Badge Connect API service error/status response MUST be reported through the imsx_statusInfo structure, carrying at least an imsx_codeMajor and imsx_severity. ob:3.0:conf:host/OB-HST-2 OB 3.0 Cert §5 (Host — Service Provider compliance) + Badge Connect API — https://www.imsglobal.org/spec/ob/v3p0/cert/#host
Modelled schema anchors
  • OB-HST-1ob:3.0:doc:getopenbadgecredentialsresponse/credential/[], ob:3.0:doc:getopenbadgecredentialsresponse/compactJwsString/[]
  • OB-HST-2ob:3.0:doc:imsx_statusinfo/imsx_codeMajor, ob:3.0:doc:imsx_statusinfo/imsx_severity
Req Level Status Statement Verified by / justification Spec source
OB-ISS-1 MUST ✅ done The @context MUST begin with the VC 2.0 context URI (https://www.w3.org/ns/credentials/v2) followed by the OB 3.0 context URI. ob:3.0:conf:issuer/OB-ISS-1 OB 3.0 §8 (AchievementCredential) — https://www.imsglobal.org/spec/ob/v3p0/#achievementcredential
OB-ISS-2 MUST ✅ done The type MUST be an unordered set containing ‘VerifiableCredential’ and one of ‘AchievementCredential’ or ‘OpenBadgeCredential’. ob:3.0:conf:issuer/OB-ISS-2 OB 3.0 §8 (AchievementCredential.type) — https://www.imsglobal.org/spec/ob/v3p0/#achievementcredential
OB-ISS-3 MUST ✅ done A verifiable AchievementCredential MUST carry at least one proof mechanism (embedded data-integrity proof) or be issued as an external JWT proof. ob:3.0:conf:issuer/OB-ISS-3 OB 3.0 §8 + VC-DATA-MODEL-2.0 §4 (data integrity) — https://www.imsglobal.org/spec/ob/v3p0/#data-integrity
OB-ISS-4 MUST ✅ done The issuer MUST be a Profile identified by an IRI in the issuer.id property. ob:3.0:conf:issuer/OB-ISS-4 OB 3.0 §8 (AchievementCredential.issuer) + §9 (Profile) — https://www.imsglobal.org/spec/ob/v3p0/#profile
OB-ISS-5 MUST ✅ done credentialSubject MUST be an AchievementSubject that identifies the achievement being awarded. ob:3.0:conf:issuer/OB-ISS-5 OB 3.0 §8 (AchievementCredential.credentialSubject) + AchievementSubject — https://www.imsglobal.org/spec/ob/v3p0/#achievementsubject
OB-ISS-6 MUST ✅ done The type sets MUST be unordered sets whose required IRIs are present: an AchievementCredential’s type MUST include ‘AchievementCredential’, and an Achievement’s type MUST include ‘Achievement’. ob:3.0:conf:issuer/OB-ISS-6 OB 3.0 §8 (AchievementCredential.type) + §Achievement — https://www.imsglobal.org/spec/ob/v3p0/#achievement
OB-ISS-7 MUST ✅ done An issued credential MUST be signed with a supported proof mechanism — a Data Integrity proof (the eddsa-rdfc-2022 or ecdsa-sd-2023 cryptosuite) or an external VC-JWT proof — and an embedded proof’s proofPurpose MUST be ‘assertionMethod’. ob:3.0:conf:issuer/OB-ISS-7 OB 3.0 Cert §3.1.1 (Issuer — Supported Proof Mechanisms) — https://www.imsglobal.org/spec/ob/v3p0/cert/#issuer
OB-ISS-8 MUST ✅ done The issued AchievementCredential MUST contain all required fields (id, @context, issuer, validFrom, credentialSubject) and be valid: it MUST pass JSON-LD validation in safe mode (every term resolved by an associated context). ob:3.0:conf:issuer/OB-ISS-8 OB 3.0 Cert §3.1 (Issuer Tests) + §Valid Badge — https://www.imsglobal.org/spec/ob/v3p0/cert/#issuer
OB-ISS-9 MUST ✅ done The recipient MUST be identified in the AchievementSubject by either an id or at least one identifier (an IdentityObject, hashed or plaintext). ob:3.0:conf:issuer/OB-ISS-9 OB 3.0 Cert §3.1 (Issuer — issue to recipient) + AchievementSubject — https://www.imsglobal.org/spec/ob/v3p0/#achievementsubject
Modelled schema anchors
  • OB-ISS-1ob:3.0:doc:achievementcredential/@context
  • OB-ISS-2ob:3.0:doc:achievementcredential/type, ob:3.0:doc:achievementcredential/type/[]
  • OB-ISS-3ob:3.0:doc:achievementcredential/proof
  • OB-ISS-4ob:3.0:doc:achievementcredential/issuer, ob:3.0:def:ProfileRef
  • OB-ISS-5ob:3.0:doc:achievementcredential/credentialSubject, ob:3.0:def:AchievementSubject/achievement
  • OB-ISS-6ob:3.0:def:AchievementCredential/type/[], ob:3.0:def:Achievement/type/[]
  • OB-ISS-7ob:3.0:def:AchievementCredential/proof, ob:3.0:def:Proof/proofPurpose
  • OB-ISS-8ob:3.0:doc:achievementcredential, ob:3.0:def:AchievementCredential/id, ob:3.0:def:AchievementCredential/@context, ob:3.0:def:AchievementCredential/issuer, ob:3.0:def:AchievementCredential/validFrom, ob:3.0:def:AchievementCredential/credentialSubject
  • OB-ISS-9ob:3.0:def:AchievementSubject/id, ob:3.0:def:AchievementSubject/identifier