Skip to main content

Identity Connector Entity Storage Examples

These snippets demonstrate document, profile, and resolution workflows using entity storage connectors and model entities.

EntityStorageIdentityConnector

import { EntityStorageIdentityConnector } from '@twin.org/identity-connector-entity-storage';

const connector = new EntityStorageIdentityConnector({
didDocumentEntityStorageType: 'identity-document',
vaultConnectorType: 'vault'
});

const className = connector.className();
const createdDocument = await connector.createDocument('controller-1');
const vaultKey = EntityStorageIdentityConnector.buildVaultKey(createdDocument.id, 'did');

await connector.removeDocument('controller-1', createdDocument.id);

console.log(className); // EntityStorageIdentityConnector
console.log(vaultKey); // did:entity-storage:.../did
import { EntityStorageIdentityConnector } from '@twin.org/identity-connector-entity-storage';
import { DidVerificationMethodType, ProofTypes } from '@twin.org/standards-w3c-did';

const connector = new EntityStorageIdentityConnector({
didDocumentEntityStorageType: 'identity-document',
vaultConnectorType: 'vault'
});

const identity = 'did:entity-storage:0x1234abcd';

const verificationMethod = await connector.addVerificationMethod(
'controller-1',
identity,
DidVerificationMethodType.VerificationMethod,
'signing-key'
);

await connector.removeVerificationMethod('controller-1', verificationMethod.id);

const service = await connector.addService(
'controller-1',
identity,
'linked-domain',
'LinkedDomains',
'https://example.org'
);

await connector.removeService('controller-1', service.id);

const createdCredential = await connector.createVerifiableCredential(
'controller-1',
`${identity}#signing-key`,
'urn:uuid:credential-001',
{
id: 'did:entity-storage:0x5678efab',
role: 'Engineer'
},
{
revocationIndex: 3
}
);

const verifiedCredential = await connector.checkVerifiableCredential(createdCredential.jwt);

await connector.revokeVerifiableCredentials('controller-1', identity, [3]);
await connector.unrevokeVerifiableCredentials('controller-1', identity, [3]);

const createdPresentation = await connector.createVerifiablePresentation(
'controller-1',
`${identity}#signing-key`,
'urn:uuid:presentation-001',
['https://www.w3.org/2018/credentials/v1'],
['VerifiablePresentation'],
[createdCredential.jwt]
);

const verifiedPresentation = await connector.checkVerifiablePresentation(createdPresentation.jwt);

const proof = await connector.createProof(
'controller-1',
`${identity}#signing-key`,
ProofTypes.DataIntegrityProof,
{
id: 'urn:example:document-1',
status: 'active'
}
);

const proofVerified = await connector.verifyProof(
{
id: 'urn:example:document-1',
status: 'active'
},
proof
);

console.log(verifiedCredential.revoked); // false
console.log(verifiedPresentation.revoked); // false
console.log(proofVerified); // true

EntityStorageIdentityProfileConnector

import { EntityStorageIdentityProfileConnector } from '@twin.org/identity-connector-entity-storage';

interface PublicProfile {
displayName: string;
region: string;
}

interface PrivateProfile {
email: string;
}

const profileConnector = new EntityStorageIdentityProfileConnector<PublicProfile, PrivateProfile>({
profileEntityStorageType: 'identity-profile'
});

const className = profileConnector.className();
const identity = 'did:entity-storage:0x1234abcd';

await profileConnector.create(
identity,
{
displayName: 'Alice',
region: 'Manchester'
},
{
email: '[email protected]'
}
);

const profile = await profileConnector.get(identity, ['displayName'], ['email']);

await profileConnector.update(
identity,
{
displayName: 'Alice Doe',
region: 'Manchester'
},
{
email: '[email protected]'
}
);

const profileList = await profileConnector.list(
[
{
propertyName: 'displayName',
propertyValue: 'Alice Doe'
}
],
undefined,
['displayName'],
['email'],
undefined,
10
);

await profileConnector.remove(identity);

console.log(className); // EntityStorageIdentityProfileConnector
console.log(profile.publicProfile.displayName); // Alice
console.log(profileList.items.length); // 1

EntityStorageIdentityResolverConnector

import { EntityStorageIdentityResolverConnector } from '@twin.org/identity-connector-entity-storage';

const resolverConnector = new EntityStorageIdentityResolverConnector({
didDocumentEntityStorageType: 'identity-document',
vaultConnectorType: 'vault'
});

const className = resolverConnector.className();
const didDocument = await resolverConnector.resolveDocument('did:entity-storage:0x1234abcd');

console.log(className); // EntityStorageIdentityResolverConnector
console.log(didDocument.id); // did:entity-storage:0x1234abcd

IdentityDocument

import { IdentityDocument } from '@twin.org/identity-connector-entity-storage';

const identityDocument = new IdentityDocument();
identityDocument.id = 'did:entity-storage:0x1234abcd';
identityDocument.document = {
id: 'did:entity-storage:0x1234abcd'
};
identityDocument.signature = 'MEYCIQCyExampleSignature';
identityDocument.controller = 'controller-1';

console.log(identityDocument.id); // did:entity-storage:0x1234abcd

IdentityProfile

import { IdentityProfile } from '@twin.org/identity-connector-entity-storage';

const identityProfile = new IdentityProfile();
identityProfile.identity = 'did:entity-storage:0x1234abcd';
identityProfile.publicProfile = {
displayName: 'Alice'
};
identityProfile.privateProfile = {
email: '[email protected]'
};

console.log(identityProfile.identity); // did:entity-storage:0x1234abcd