← ClaudeAtlas

igrantio-issuer-backendlisted

Build the backend for an OpenID4VCI credential ISSUER against the iGrant.io Organisation Wallet Suite (OWS). A tenant-aware Node/TypeScript (Express) service that hides per-organisation API keys behind a proxy, registers and receives OWS issuance webhooks (HMAC-verified), and pushes live status to the browser over SSE. Use when an application must issue verifiable credentials (SD-JWT VC, W3C VC, mso_mdoc) to an eIDAS 2.0 EUDI Wallet (EUDIW) or European Business Wallet (EUBW) and the API key must never reach the frontend.
L3-iGrant/skills · ★ 0 · API & Backend · score 73
Install: claude install-skill L3-iGrant/skills
# iGrant.io issuer backend (OpenID4VCI) ## When to use Build or extend the server that an **issuer** frontend talks to. It composes three building blocks for the issuance flow only (least privilege): `igrantio-backend-proxy` + `igrantio-backend-webhooks` + `igrantio-backend-sse`. For the verifier equivalent use `igrantio-verifier-backend` (separate skill). Read `igrantio-ows-overview` first for the API and architecture. **Before you build**: run the integrator intake in `igrantio-ows-overview` - environment, API key, tenancy, backend host, webhooks, frontend - one question at a time, a recommended default with each. ## What it does - **Proxy** `GET|POST|PUT ${PROXY_PREFIX}/{tenant}/...` → OWS, injecting the tenant's `ApiKey`. Allow-lists only OWS **credential** endpoints (issue, history). - **Register** the issuer webhook idempotently (`ISSUER_TOPICS`) via `scripts/register-webhook.ts`. - **Receive** `POST /webhook`, verify the `X-iGrant-Signature` HMAC, extract the `CredentialExchangeId`, store the event. - **SSE** `GET /webhook/sse/{CredentialExchangeId}` streams the event to the browser; `DELETE /webhook/{id}` lets it consume-and-delete. ## Reference implementation Runnable Express + TypeScript app in [`./references`](./references): ``` references/ src/config.ts env config src/tenants.ts TenantStore - per-tenant API-key resolution (env or pluggable) src/eventStore.ts in-memory event store (swap for Redis/Postgres) src/topics.ts