sora_sdk_bht
v0.1.1
Published
Sora academic credential library for Bhutan
Maintainers
Readme
Sorakit
Sora is a TypeScript toolkit for issuing, sharing, verifying, revoking, and converting academic credentials for Bhutan-focused education systems.
It wraps the hard parts behind a small developer API:
- Bhutan NDI issuer and verifier flows
- RUB Academic Certificate schema support
- Ethereum accreditation and revocation checks
- Selective sharing
- Bhutanese percentage conversion to GPA, CGPA, UK Honours, and ECTS
Install
npm install sorakitQuick Start
import { Sora, GradeSystem } from 'sorakit';
const sora = new Sora({
ndiApiUrl: 'https://demo-client.bhutanndi.com',
ndiAuthUrl: 'https://staging.bhutanndi.com',
ndiClientUrl: 'https://demo-client.bhutanndi.com',
ndiApiKey: process.env.NDI_API_KEY || 'demo-key',
ethereumRpcUrl: process.env.ETHEREUM_RPC_URL!,
ethereumPrivateKey: process.env.ETHEREUM_PRIVATE_KEY!,
contractAddress: process.env.CONTRACT_ADDRESS!,
walletAddress: process.env.WALLET_ADDRESS!,
environment: 'staging',
});
const session = await sora.loginWithNDI(
'rub-001',
process.env.NDI_CLIENT_ID!,
process.env.NDI_CLIENT_SECRET!
);
const credential = await sora.issue(
session.token,
'1234',
'did:key:z6...',
'DEGREE',
'BSc Computer Science',
{ value: 86, system: GradeSystem.BHUTANESE_PERCENTAGE },
{
institutionName: 'Royal University of Bhutan',
collegeName: 'Gyalpozhing College of Information Technology',
studentName: 'Dorji Sonam',
titleOfAward: 'BSc Computer Science',
}
);
const share = await sora.share(credential.id, { scope: 'GRADES_ONLY' });
const verification = await sora.verify(credential.id);Core API
await sora.loginWithNDI(institutionId, clientId, clientSecret);
await sora.createHolderDIDRequest();
await sora.issue(sessionToken, studentId, holderDID, credentialType, subject, grade, metadata);
await sora.verify(credentialId);
await sora.revoke(credentialId, reason);
await sora.share(credentialId, disclosureScope);
sora.convert(grade, fromSystem, toSystem);Supported Grade Systems
BHUTANESE_PERCENTAGEGPA_4_POINTCGPAUK_HONOURSECTS
Demo And Mock Mode
For local demos, set:
mockMode: true,
mockEthereum: trueThis lets teams demonstrate issue, verify, revoke, share, and grade conversion flows without live NDI or Ethereum infrastructure.
License
MIT
