Skip to content

feat: add utopia-ambulance-driver OBv3 example credential#143

Open
applesnort wants to merge 4 commits into
credential-handler:mainfrom
applesnort:feat/utopia-ambulance-driver
Open

feat: add utopia-ambulance-driver OBv3 example credential#143
applesnort wants to merge 4 commits into
credential-handler:mainfrom
applesnort:feat/utopia-ambulance-driver

Conversation

@applesnort

@applesnort applesnort commented Jun 30, 2026

Copy link
Copy Markdown

Summary

  • Adds credentials/utopia-ambulance-driver/ — a Utopia-namespaced OpenBadge v3 example credential
  • Uses https://www.w3.org/ns/credentials/v2 + https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json
  • Issued by "Utopia Department of Motor Vehicles", achievementType: Certificate
  • Follows the same pattern as utopia-dl, utopia-natcert, etc.

Test plan

  • Credential JSON loads in vc-playground issuer tile
  • Issues end-to-end into Veres wallet via OID4VCI

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@applesnort cc: @BigBlueHat

We might want to update the image.png file here at some point.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bparth24 because?

@applesnort applesnort Jun 30, 2026

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the note, Parth. Agreed — I tracked it so it doesn't get lost. I'll swap in proper artwork once the full EMSA certificate type set is finalized.

Mind dismissing your review so this can merge? Benjamin has already approved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bparth24 because?

@BigBlueHat @applesnort I thought there might be a better design we can do for the badge. No other reason.

Please move forward with what we have now. This should not be a blocker.

…river

- Add SvgRenderingTemplate2024 with Lucide ambulance icon hex badge
- Add top-level description field
- Add image field pointing to rendered badge PNG
- Add build.js to embed image.svg template into credential.json
- Regenerate image.png from final SVG design
- Replace image.svg (was hex badge) with Lucide ambulance icon on
  light blue rounded-square background; regenerate image.png
- Add badge.svg as the hexagonal SvgRenderingTemplate2024 source
- Update build.js to read badge.svg instead of image.svg
- Move image field into credentialSubject.achievement per OBv3 spec
- Add credentialSubject.id
- Normalize issuer.type to array
@applesnort
applesnort requested a review from bparth24 July 21, 2026 15:35

@bparth24 bparth24 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@applesnort

Copy link
Copy Markdown
Author

@bparth24 @BigBlueHat this is now fully approved and clean (no conflicts, no CI checks configured) -- could one of you merge it when you get a chance? This gets the generic Utopia ambulance-driver-certificate credential live in the real VC Playground. I recorded a demo showing it issuing/rendering correctly on my local stack, happy to share if useful.

@bparth24
bparth24 self-requested a review July 22, 2026 16:26

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@applesnort cc: @BigBlueHat

I missed one more thing.

I would suggest following the structure for the queries.json file from existing examples in the repo.

An example:

{
  "default": {
    "type": "QueryByExample",
    "credentialQuery": [
      {
        "reason": "Please present your OpenBadgeCredential Verifiable Credential(s) to complete the verification process.",
        "example": {
          "@context": [
            "https://www.w3.org/ns/credentials/v2",
            "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
          ],
          "type": [
            "OpenBadgeCredential"
          ],
          "credentialSubject": {
            "achievement": {
              "name": "Ambulance Driver Certificate"
            }
          }
        },
        "acceptedCryptosuites": [
          "Ed25519Signature2020",
          "eddsa-rdfc-2022",
          "ecdsa-rdfc-2019",
          "bbs-2023",
          "ecdsa-sd-2023"
        ]
      }
    ]
  }
}

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — switched to the default/QueryByExample shape (matching fema-ics-100) with acceptedCryptosuites and the achievement-scoped credentialSubject example you suggested. Pushed in 4ec9efd.

Switch from the ad-hoc web/VerifiablePresentation/query nesting to
the standard default/QueryByExample shape used elsewhere in the repo
(e.g. fema-ics-100), and add acceptedCryptosuites and an
achievement-scoped credentialSubject example per Parth's review
feedback.

Addresses review feedback on credential-handler#143.
@applesnort
applesnort requested a review from bparth24 July 22, 2026 16:49

@bparth24 bparth24 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@applesnort LGTM.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants