@sphereon/ssi-sdk.w3c-vc-api 0.28.1-next.13 → 0.28.1-next.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-functions.d.ts.map +1 -1
- package/dist/api-functions.js +43 -11
- package/dist/api-functions.js.map +1 -1
- package/dist/types.d.ts +3 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -10
- package/src/api-functions.ts +47 -11
- package/src/types.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-functions.d.ts","sourceRoot":"","sources":["../src/api-functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-functions.d.ts","sourceRoot":"","sources":["../src/api-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,mBAAmB,EAAqB,MAAM,+BAA+B,CAAA;AAIjG,OAAO,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAA;AAEnD,OAAO,EAAE,4BAA4B,EAAE,gBAAgB,EAAmB,6BAA6B,EAAE,MAAM,SAAS,CAAA;AAKxH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,4BAA4B,QAsCrH;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,mBAAmB,QA+B3G;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,mBAAmB,QA8B1G;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,6BAA6B,QA2BvH;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,mBAAmB,QAoC7G"}
|
package/dist/api-functions.js
CHANGED
|
@@ -13,10 +13,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.deleteCredentialEndpoint = exports.verifyCredentialEndpoint = exports.getCredentialEndpoint = exports.getCredentialsEndpoint = exports.issueCredentialEndpoint = void 0;
|
|
16
|
-
const ssi_sdk_core_1 = require("@sphereon/ssi-sdk.core");
|
|
17
16
|
const ssi_express_support_1 = require("@sphereon/ssi-express-support");
|
|
18
17
|
const uuid_1 = require("uuid");
|
|
19
18
|
const debug_1 = __importDefault(require("debug"));
|
|
19
|
+
const ssi_sdk_credential_store_1 = require("@sphereon/ssi-sdk.credential-store");
|
|
20
|
+
const ssi_sdk_data_store_1 = require("@sphereon/ssi-sdk.data-store");
|
|
20
21
|
const debug = (0, debug_1.default)('sphereon:ssi-sdk:w3c-vc-api');
|
|
21
22
|
function issueCredentialEndpoint(router, context, opts) {
|
|
22
23
|
var _a;
|
|
@@ -70,9 +71,23 @@ function getCredentialsEndpoint(router, context, opts) {
|
|
|
70
71
|
const path = (_a = opts === null || opts === void 0 ? void 0 : opts.path) !== null && _a !== void 0 ? _a : '/credentials';
|
|
71
72
|
router.get(path, (0, ssi_express_support_1.checkAuth)(opts === null || opts === void 0 ? void 0 : opts.endpoint), (request, response) => __awaiter(this, void 0, void 0, function* () {
|
|
72
73
|
try {
|
|
73
|
-
const
|
|
74
|
+
const credentialRole = request.query.credentialRole || ssi_sdk_data_store_1.CredentialRole.HOLDER;
|
|
75
|
+
if (!Object.values(ssi_sdk_data_store_1.CredentialRole).includes(credentialRole)) {
|
|
76
|
+
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, `Invalid credentialRole: ${credentialRole}`);
|
|
77
|
+
}
|
|
78
|
+
const documentType = request.query.documentType || ssi_sdk_credential_store_1.DocumentType.VC;
|
|
79
|
+
if (!Object.values(ssi_sdk_credential_store_1.DocumentType).includes(documentType)) {
|
|
80
|
+
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, `Invalid documentType: ${documentType}`);
|
|
81
|
+
}
|
|
82
|
+
const filter = [
|
|
83
|
+
{
|
|
84
|
+
documentType: documentType,
|
|
85
|
+
credentialRole: credentialRole,
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
const uniqueVCs = yield context.agent.crsGetUniqueCredentials({ filter });
|
|
74
89
|
response.statusCode = 202;
|
|
75
|
-
return response.send(uniqueVCs.map((uVC) => uVC.
|
|
90
|
+
return response.send(uniqueVCs.map((uVC) => uVC.uniformVerifiableCredential));
|
|
76
91
|
}
|
|
77
92
|
catch (e) {
|
|
78
93
|
return (0, ssi_express_support_1.sendErrorResponse)(response, 500, e.message, e);
|
|
@@ -93,12 +108,19 @@ function getCredentialEndpoint(router, context, opts) {
|
|
|
93
108
|
if (!id) {
|
|
94
109
|
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, 'no id provided');
|
|
95
110
|
}
|
|
96
|
-
|
|
97
|
-
if (!
|
|
98
|
-
return (0, ssi_express_support_1.sendErrorResponse)(response,
|
|
111
|
+
const credentialRole = request.query.credentialRole || ssi_sdk_data_store_1.CredentialRole.HOLDER;
|
|
112
|
+
if (!Object.values(ssi_sdk_data_store_1.CredentialRole).includes(credentialRole)) {
|
|
113
|
+
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, `Invalid credentialRole: ${credentialRole}`);
|
|
114
|
+
}
|
|
115
|
+
const vcInfo = yield context.agent.crsGetUniqueCredentialByIdOrHash({
|
|
116
|
+
credentialRole: credentialRole,
|
|
117
|
+
idOrHash: id,
|
|
118
|
+
});
|
|
119
|
+
if (!vcInfo) {
|
|
120
|
+
return (0, ssi_express_support_1.sendErrorResponse)(response, 403, `id ${id} not found`);
|
|
99
121
|
}
|
|
100
122
|
response.statusCode = 200;
|
|
101
|
-
return response.send(vcInfo.
|
|
123
|
+
return response.send(vcInfo.uniformVerifiableCredential);
|
|
102
124
|
}
|
|
103
125
|
catch (e) {
|
|
104
126
|
return (0, ssi_express_support_1.sendErrorResponse)(response, 500, e.message, e);
|
|
@@ -148,12 +170,22 @@ function deleteCredentialEndpoint(router, context, opts) {
|
|
|
148
170
|
if (!id) {
|
|
149
171
|
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, 'no id provided');
|
|
150
172
|
}
|
|
151
|
-
|
|
152
|
-
if (
|
|
173
|
+
const credentialRole = request.query.credentialRole;
|
|
174
|
+
if (credentialRole === undefined) {
|
|
175
|
+
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, 'credentialRole query parameter is missing');
|
|
176
|
+
}
|
|
177
|
+
if (!Object.values(ssi_sdk_data_store_1.CredentialRole).includes(credentialRole)) {
|
|
178
|
+
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, `Invalid credentialRole: ${credentialRole}`);
|
|
179
|
+
}
|
|
180
|
+
const vcInfo = yield context.agent.crsGetUniqueCredentialByIdOrHash({
|
|
181
|
+
credentialRole: credentialRole,
|
|
182
|
+
idOrHash: id,
|
|
183
|
+
});
|
|
184
|
+
if (!vcInfo) {
|
|
153
185
|
return (0, ssi_express_support_1.sendErrorResponse)(response, 404, `id ${id} not found`);
|
|
154
186
|
}
|
|
155
|
-
const success = context.agent.
|
|
156
|
-
if (
|
|
187
|
+
const success = yield context.agent.crsDeleteCredentials({ filter: [{ hash: vcInfo.hash }] });
|
|
188
|
+
if (success === 0) {
|
|
157
189
|
return (0, ssi_express_support_1.sendErrorResponse)(response, 400, `Could not delete Verifiable Credential with id ${id}`);
|
|
158
190
|
}
|
|
159
191
|
response.statusCode = 200;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-functions.js","sourceRoot":"","sources":["../src/api-functions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"api-functions.js","sourceRoot":"","sources":["../src/api-functions.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { GenericAuthArgs, ISingleEndpointOpts } from '@sphereon/ssi-express-support';
|
|
2
|
-
import { IAgentContext, ICredentialIssuer, ICredentialPlugin, ICredentialVerifier,
|
|
2
|
+
import { IAgentContext, ICredentialIssuer, ICredentialPlugin, ICredentialVerifier, IDataStoreORM, IDIDManager, IKeyManager, IResolver } from '@veramo/core';
|
|
3
3
|
import { ProofFormat } from '@veramo/core/src/types/ICredentialIssuer';
|
|
4
|
-
|
|
4
|
+
import { ICredentialStore } from '@sphereon/ssi-sdk.credential-store';
|
|
5
|
+
export type IRequiredPlugins = IDataStoreORM & IDIDManager & IKeyManager & ICredentialIssuer & ICredentialVerifier & ICredentialStore & ICredentialPlugin & IResolver;
|
|
5
6
|
export type IRequiredContext = IAgentContext<IRequiredPlugins>;
|
|
6
7
|
export interface IVCAPIOpts {
|
|
7
8
|
endpointOpts?: IVCAPIEndpointOpts;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACpF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACpF,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACV,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAErE,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAC1C,WAAW,GACX,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,CAAA;AACX,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAA;AAI9D,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IAEjC,mBAAmB,CAAC,EAAE,eAAe,CAAA;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B,eAAe,CAAC,EAAE,4BAA4B,CAAA;IAC9C,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;IACtC,gBAAgB,CAAC,EAAE,6BAA6B,CAAA;IAChD,kBAAkB,CAAC,EAAE,mBAAmB,CAAA;CACzC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAA;AAEnE,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,aAAa,EAAE,CAAA;IAChC,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAElC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;IAExB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,mBAAmB,CAAC,EAAE,eAAe,CAAA;IACrC,wBAAwB,CAAC,EAAE,OAAO,CAAA;CACnC;AAED,MAAM,WAAW,6BAA8B,SAAQ,mBAAmB;IACxE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.w3c-vc-api",
|
|
3
|
-
"version": "0.28.1-next.
|
|
3
|
+
"version": "0.28.1-next.39+150eb383",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@sphereon/did-auth-siop": "0.6.4",
|
|
15
|
-
"@sphereon/ssi-express-support": "0.28.1-next.
|
|
16
|
-
"@sphereon/ssi-sdk.core": "0.28.1-next.
|
|
17
|
-
"@sphereon/ssi-sdk.
|
|
18
|
-
"@sphereon/ssi-sdk.
|
|
19
|
-
"@sphereon/ssi-
|
|
15
|
+
"@sphereon/ssi-express-support": "0.28.1-next.39+150eb383",
|
|
16
|
+
"@sphereon/ssi-sdk.core": "0.28.1-next.39+150eb383",
|
|
17
|
+
"@sphereon/ssi-sdk.credential-store": "0.28.1-next.39+150eb383",
|
|
18
|
+
"@sphereon/ssi-sdk.kv-store-temp": "0.28.1-next.39+150eb383",
|
|
19
|
+
"@sphereon/ssi-sdk.presentation-exchange": "0.28.1-next.39+150eb383",
|
|
20
|
+
"@sphereon/ssi-types": "0.28.1-next.39+150eb383",
|
|
20
21
|
"@veramo/core": "4.2.0",
|
|
21
22
|
"@veramo/credential-w3c": "4.2.0",
|
|
22
23
|
"body-parser": "^1.20.2",
|
|
@@ -36,9 +37,9 @@
|
|
|
36
37
|
"@sphereon/ssi-sdk-ext.did-resolver-jwk": "0.23.1-next.5",
|
|
37
38
|
"@sphereon/ssi-sdk-ext.key-manager": "0.23.1-next.5",
|
|
38
39
|
"@sphereon/ssi-sdk-ext.kms-local": "0.23.1-next.5",
|
|
39
|
-
"@sphereon/ssi-sdk.agent-config": "0.28.1-next.
|
|
40
|
-
"@sphereon/ssi-sdk.data-store": "0.28.1-next.
|
|
41
|
-
"@sphereon/ssi-sdk.vc-handler-ld-local": "0.28.1-next.
|
|
40
|
+
"@sphereon/ssi-sdk.agent-config": "0.28.1-next.39+150eb383",
|
|
41
|
+
"@sphereon/ssi-sdk.data-store": "0.28.1-next.39+150eb383",
|
|
42
|
+
"@sphereon/ssi-sdk.vc-handler-ld-local": "0.28.1-next.39+150eb383",
|
|
42
43
|
"@types/body-parser": "^1.19.5",
|
|
43
44
|
"@types/cookie-parser": "^1.4.7",
|
|
44
45
|
"@types/cors": "^2.8.17",
|
|
@@ -91,5 +92,5 @@
|
|
|
91
92
|
"W3C",
|
|
92
93
|
"VC API"
|
|
93
94
|
],
|
|
94
|
-
"gitHead": "
|
|
95
|
+
"gitHead": "150eb383f24ddc8f6d25a3856abcc89ad241cf12"
|
|
95
96
|
}
|
package/src/api-functions.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getCredentialByIdOrHash } from '@sphereon/ssi-sdk.core'
|
|
2
1
|
import { checkAuth, ISingleEndpointOpts, sendErrorResponse } from '@sphereon/ssi-express-support'
|
|
3
2
|
import { CredentialPayload } from '@veramo/core'
|
|
4
3
|
import { ProofFormat } from '@veramo/core/src/types/ICredentialIssuer'
|
|
@@ -7,6 +6,8 @@ import { Request, Response, Router } from 'express'
|
|
|
7
6
|
import { v4 } from 'uuid'
|
|
8
7
|
import { IIssueCredentialEndpointOpts, IRequiredContext, IVCAPIIssueOpts, IVerifyCredentialEndpointOpts } from './types'
|
|
9
8
|
import Debug from 'debug'
|
|
9
|
+
import { DocumentType, FindDigitalCredentialArgs } from '@sphereon/ssi-sdk.credential-store'
|
|
10
|
+
import { CredentialRole } from '@sphereon/ssi-sdk.data-store'
|
|
10
11
|
const debug = Debug('sphereon:ssi-sdk:w3c-vc-api')
|
|
11
12
|
export function issueCredentialEndpoint(router: Router, context: IRequiredContext, opts?: IIssueCredentialEndpointOpts) {
|
|
12
13
|
if (opts?.enabled === false) {
|
|
@@ -56,9 +57,25 @@ export function getCredentialsEndpoint(router: Router, context: IRequiredContext
|
|
|
56
57
|
const path = opts?.path ?? '/credentials'
|
|
57
58
|
router.get(path, checkAuth(opts?.endpoint), async (request: Request, response: Response) => {
|
|
58
59
|
try {
|
|
59
|
-
const
|
|
60
|
+
const credentialRole = (request.query.credentialRole as CredentialRole) || CredentialRole.HOLDER
|
|
61
|
+
if (!Object.values(CredentialRole).includes(credentialRole)) {
|
|
62
|
+
return sendErrorResponse(response, 400, `Invalid credentialRole: ${credentialRole}`)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const documentType = (request.query.documentType as DocumentType) || DocumentType.VC
|
|
66
|
+
if (!Object.values(DocumentType).includes(documentType)) {
|
|
67
|
+
return sendErrorResponse(response, 400, `Invalid documentType: ${documentType}`)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const filter: FindDigitalCredentialArgs = [
|
|
71
|
+
{
|
|
72
|
+
documentType: documentType,
|
|
73
|
+
credentialRole: credentialRole,
|
|
74
|
+
},
|
|
75
|
+
]
|
|
76
|
+
const uniqueVCs = await context.agent.crsGetUniqueCredentials({ filter })
|
|
60
77
|
response.statusCode = 202
|
|
61
|
-
return response.send(uniqueVCs.map((uVC) => uVC.
|
|
78
|
+
return response.send(uniqueVCs.map((uVC) => uVC.uniformVerifiableCredential))
|
|
62
79
|
} catch (e) {
|
|
63
80
|
return sendErrorResponse(response, 500, e.message as string, e)
|
|
64
81
|
}
|
|
@@ -77,12 +94,20 @@ export function getCredentialEndpoint(router: Router, context: IRequiredContext,
|
|
|
77
94
|
if (!id) {
|
|
78
95
|
return sendErrorResponse(response, 400, 'no id provided')
|
|
79
96
|
}
|
|
80
|
-
|
|
81
|
-
if (!
|
|
82
|
-
return sendErrorResponse(response,
|
|
97
|
+
const credentialRole = (request.query.credentialRole as CredentialRole) || CredentialRole.HOLDER
|
|
98
|
+
if (!Object.values(CredentialRole).includes(credentialRole)) {
|
|
99
|
+
return sendErrorResponse(response, 400, `Invalid credentialRole: ${credentialRole}`)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const vcInfo = await context.agent.crsGetUniqueCredentialByIdOrHash({
|
|
103
|
+
credentialRole: credentialRole,
|
|
104
|
+
idOrHash: id,
|
|
105
|
+
})
|
|
106
|
+
if (!vcInfo) {
|
|
107
|
+
return sendErrorResponse(response, 403, `id ${id} not found`)
|
|
83
108
|
}
|
|
84
109
|
response.statusCode = 200
|
|
85
|
-
return response.send(vcInfo.
|
|
110
|
+
return response.send(vcInfo.uniformVerifiableCredential)
|
|
86
111
|
} catch (e) {
|
|
87
112
|
return sendErrorResponse(response, 500, e.message as string, e)
|
|
88
113
|
}
|
|
@@ -129,12 +154,23 @@ export function deleteCredentialEndpoint(router: Router, context: IRequiredConte
|
|
|
129
154
|
if (!id) {
|
|
130
155
|
return sendErrorResponse(response, 400, 'no id provided')
|
|
131
156
|
}
|
|
132
|
-
|
|
133
|
-
if (
|
|
157
|
+
const credentialRole = request.query.credentialRole as CredentialRole
|
|
158
|
+
if (credentialRole === undefined) {
|
|
159
|
+
return sendErrorResponse(response, 400, 'credentialRole query parameter is missing')
|
|
160
|
+
}
|
|
161
|
+
if (!Object.values(CredentialRole).includes(credentialRole)) {
|
|
162
|
+
return sendErrorResponse(response, 400, `Invalid credentialRole: ${credentialRole}`)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const vcInfo = await context.agent.crsGetUniqueCredentialByIdOrHash({
|
|
166
|
+
credentialRole: credentialRole,
|
|
167
|
+
idOrHash: id,
|
|
168
|
+
})
|
|
169
|
+
if (!vcInfo) {
|
|
134
170
|
return sendErrorResponse(response, 404, `id ${id} not found`)
|
|
135
171
|
}
|
|
136
|
-
const success = context.agent.
|
|
137
|
-
if (
|
|
172
|
+
const success = await context.agent.crsDeleteCredentials({ filter: [{ hash: vcInfo.hash }] })
|
|
173
|
+
if (success === 0) {
|
|
138
174
|
return sendErrorResponse(response, 400, `Could not delete Verifiable Credential with id ${id}`)
|
|
139
175
|
}
|
|
140
176
|
response.statusCode = 200
|
package/src/types.ts
CHANGED
|
@@ -4,20 +4,20 @@ import {
|
|
|
4
4
|
ICredentialIssuer,
|
|
5
5
|
ICredentialPlugin,
|
|
6
6
|
ICredentialVerifier,
|
|
7
|
-
IDataStore,
|
|
8
7
|
IDataStoreORM,
|
|
9
8
|
IDIDManager,
|
|
10
9
|
IKeyManager,
|
|
11
10
|
IResolver,
|
|
12
11
|
} from '@veramo/core'
|
|
13
12
|
import { ProofFormat } from '@veramo/core/src/types/ICredentialIssuer'
|
|
13
|
+
import { ICredentialStore } from '@sphereon/ssi-sdk.credential-store'
|
|
14
14
|
|
|
15
|
-
export type IRequiredPlugins =
|
|
16
|
-
IDataStoreORM &
|
|
15
|
+
export type IRequiredPlugins = IDataStoreORM &
|
|
17
16
|
IDIDManager &
|
|
18
17
|
IKeyManager &
|
|
19
18
|
ICredentialIssuer &
|
|
20
19
|
ICredentialVerifier &
|
|
20
|
+
ICredentialStore &
|
|
21
21
|
ICredentialPlugin &
|
|
22
22
|
IResolver
|
|
23
23
|
export type IRequiredContext = IAgentContext<IRequiredPlugins>
|