This package provides a DWN protocol for credential issuance. See protocol/credential-issuance.ts
for the protocol, and the accompanying schemas directory for individual schemas
This project defines a protocol that uses Credential Manifests to define the credentials required to get other credentials.
A credential issuer provides one or more manifests defining credentials needed to apply for other credentials.
A credential applicant can then send a Credential Application to the issuer.
The issuer can reply with a Credential Response fulfillment including one or more credentials, or a denial including reasons why the credentials were not sufficient. It may also optionally respond with an invoice that must be paid before the request is fulfilled.
// issuer side
import {
credentialIssuerProtocol,
manifestSchema,
} from "@web5/credential-issuance-protocol";
// example use in protocol query
const { protocols } = await web5.dwn.protocols.query({
from: did,
message: {
filter: {
protocol: credentialIssuerProtocol.protocol,
},
},
});
// applicant side
import {
credentialApplicantProtocol,
manifestSchema,
presentationSchema,
responseSchema,
} from "@web5/credential-issuance-protocol";
// example use in write
const { record: applicationRecord, status: createStatus } =
await web5?.web5.dwn.records.create({
store: true,
data: presentationResult.presentation,
message: {
recipient: issuerDid,
schema: presentationSchema.$id,
dataFormat: "application/json",
protocol: credentialApplicantProtocol.protocol,
protocolPath: "application",
},
});
Resource | Description |
---|---|
CODEOWNERS | Outlines the project lead(s) |
CODE_OF_CONDUCT.md | Expected behavior for project contributors, promoting a welcoming environment |
CONTRIBUTING.md | Developer guide to build, test, run, access CI, chat, discuss, file issues |
GOVERNANCE.md | Project governance |
LICENSE | Apache License, Version 2.0 |