@twin.org/identity-service 0.0.3-next.15 → 0.0.3-next.16
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/es/identityRoutes.js +87 -13
- package/dist/es/identityRoutes.js.map +1 -1
- package/dist/types/identityRoutes.d.ts +9 -1
- package/docs/changelog.md +16 -0
- package/docs/open-api/spec.json +126 -24
- package/docs/reference/functions/identityVerifiableCredentialVerifyDocument.md +31 -0
- package/docs/reference/index.md +1 -0
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextIdHelper, ContextIdKeys, ContextIdStore } from "@twin.org/context";
|
|
2
|
-
import { Coerce, ComponentFactory, Guards
|
|
2
|
+
import { Coerce, ComponentFactory, Guards } from "@twin.org/core";
|
|
3
3
|
import { DocumentHelper } from "@twin.org/identity-models";
|
|
4
4
|
import { DidContexts } from "@twin.org/standards-w3c-did";
|
|
5
5
|
import { HttpStatusCode } from "@twin.org/web";
|
|
@@ -367,6 +367,72 @@ export function generateRestRoutesIdentity(baseRouteName, componentName) {
|
|
|
367
367
|
],
|
|
368
368
|
skipAuth: true
|
|
369
369
|
};
|
|
370
|
+
const identityVerifiableCredentialVerifyDocumentRoute = {
|
|
371
|
+
operationId: "identityVerifiableCredentialVerifyDocument",
|
|
372
|
+
summary: "Verify an identity verifiable credential document",
|
|
373
|
+
tag: tagsIdentity[0].name,
|
|
374
|
+
method: "POST",
|
|
375
|
+
path: `${baseRouteName}/verifiable-credential/verify/document`,
|
|
376
|
+
handler: async (httpRequestContext, request) => identityVerifiableCredentialVerifyDocument(httpRequestContext, componentName, request),
|
|
377
|
+
requestType: {
|
|
378
|
+
type: "IIdentityVerifiableCredentialVerifyDocumentRequest",
|
|
379
|
+
examples: [
|
|
380
|
+
{
|
|
381
|
+
id: "identityVerifiableCredentialVerifyDocumentRequestExample",
|
|
382
|
+
request: {
|
|
383
|
+
body: {
|
|
384
|
+
"@context": ["https://www.w3.org/2018/credentials/v1", "https://schema.org"],
|
|
385
|
+
id: "https://example.com/credentials/3732",
|
|
386
|
+
type: ["VerifiableCredential", "Person"],
|
|
387
|
+
credentialSubject: {
|
|
388
|
+
id: "did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def",
|
|
389
|
+
name: "Jane Doe"
|
|
390
|
+
},
|
|
391
|
+
issuer: "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a",
|
|
392
|
+
issuanceDate: "2025-01-24T09:21:51.500Z",
|
|
393
|
+
credentialStatus: {
|
|
394
|
+
id: "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation",
|
|
395
|
+
type: "BitstringStatusList",
|
|
396
|
+
revocationBitmapIndex: "5"
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
]
|
|
402
|
+
},
|
|
403
|
+
responseType: [
|
|
404
|
+
{
|
|
405
|
+
type: "IIdentityVerifiableCredentialVerifyResponse",
|
|
406
|
+
examples: [
|
|
407
|
+
{
|
|
408
|
+
id: "identityVerifiableCredentialVerifyResponseExample",
|
|
409
|
+
response: {
|
|
410
|
+
body: {
|
|
411
|
+
revoked: false,
|
|
412
|
+
verifiableCredential: {
|
|
413
|
+
"@context": ["https://www.w3.org/2018/credentials/v1", "https://schema.org"],
|
|
414
|
+
id: "https://example.com/credentials/3732",
|
|
415
|
+
type: ["VerifiableCredential", "Person"],
|
|
416
|
+
credentialSubject: {
|
|
417
|
+
id: "did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def",
|
|
418
|
+
name: "Jane Doe"
|
|
419
|
+
},
|
|
420
|
+
issuer: "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a",
|
|
421
|
+
issuanceDate: "2025-01-24T09:21:51.500Z",
|
|
422
|
+
credentialStatus: {
|
|
423
|
+
id: "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation",
|
|
424
|
+
type: "BitstringStatusList",
|
|
425
|
+
revocationBitmapIndex: "5"
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
]
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
skipAuth: true
|
|
435
|
+
};
|
|
370
436
|
const identityVerifiableCredentialRevokeRoute = {
|
|
371
437
|
operationId: "identityVerifiableCredentialRevoke",
|
|
372
438
|
summary: "Revoke an identity verifiable credential",
|
|
@@ -663,6 +729,7 @@ export function generateRestRoutesIdentity(baseRouteName, componentName) {
|
|
|
663
729
|
identityServiceCreateRoute,
|
|
664
730
|
identityServiceRemoveRoute,
|
|
665
731
|
identityVerifiableCredentialCreateRoute,
|
|
732
|
+
identityVerifiableCredentialVerifyDocumentRoute,
|
|
666
733
|
identityVerifiableCredentialVerifyRoute,
|
|
667
734
|
identityVerifiableCredentialRevokeRoute,
|
|
668
735
|
identityVerifiableCredentialUnrevokeRoute,
|
|
@@ -817,19 +884,26 @@ export async function identityVerifiableCredentialCreate(httpRequestContext, com
|
|
|
817
884
|
*/
|
|
818
885
|
export async function identityVerifiableCredentialVerify(httpRequestContext, componentName, request) {
|
|
819
886
|
Guards.object(ROUTES_SOURCE, "request", request);
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
}
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
887
|
+
Guards.object(ROUTES_SOURCE, "request.query", request.query);
|
|
888
|
+
const component = ComponentFactory.get(componentName);
|
|
889
|
+
const result = await component.verifiableCredentialVerify(request.query?.jwt);
|
|
890
|
+
return {
|
|
891
|
+
body: result
|
|
892
|
+
};
|
|
893
|
+
}
|
|
894
|
+
/**
|
|
895
|
+
* Verify a verifiable credential document.
|
|
896
|
+
* @param httpRequestContext The request context for the API.
|
|
897
|
+
* @param componentName The name of the component to use in the routes stored in the ComponentFactory.
|
|
898
|
+
* @param request The request.
|
|
899
|
+
* @returns The response object with additional http response properties.
|
|
900
|
+
*/
|
|
901
|
+
export async function identityVerifiableCredentialVerifyDocument(httpRequestContext, componentName, request) {
|
|
902
|
+
Guards.object(ROUTES_SOURCE, "request", request);
|
|
903
|
+
Guards.object(ROUTES_SOURCE, "request.body", request.body);
|
|
904
|
+
Guards.object(ROUTES_SOURCE, "request.body", request.body);
|
|
831
905
|
const component = ComponentFactory.get(componentName);
|
|
832
|
-
const result = await component.verifiableCredentialVerify(
|
|
906
|
+
const result = await component.verifiableCredentialVerify(request.body);
|
|
833
907
|
return {
|
|
834
908
|
body: result
|
|
835
909
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identityRoutes.js","sourceRoot":"","sources":["../../src/identityRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tIHttpRequestContext,\n\tINoContentResponse,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport { ContextIdHelper, ContextIdKeys, ContextIdStore } from \"@twin.org/context\";\nimport { Coerce, ComponentFactory, Guards, Is } from \"@twin.org/core\";\nimport {\n\tDocumentHelper,\n\ttype IIdentityComponent,\n\ttype IIdentityCreateRequest,\n\ttype IIdentityCreateResponse,\n\ttype IIdentityProofCreateRequest,\n\ttype IIdentityProofCreateResponse,\n\ttype IIdentityProofVerifyRequest,\n\ttype IIdentityProofVerifyResponse,\n\ttype IIdentityRemoveRequest,\n\ttype IIdentityServiceCreateRequest,\n\ttype IIdentityServiceCreateResponse,\n\ttype IIdentityServiceRemoveRequest,\n\ttype IIdentityVerifiableCredentialCreateRequest,\n\ttype IIdentityVerifiableCredentialCreateResponse,\n\ttype IIdentityVerifiableCredentialRevokeRequest,\n\ttype IIdentityVerifiableCredentialUnrevokeRequest,\n\ttype IIdentityVerifiableCredentialVerifyRequest,\n\ttype IIdentityVerifiableCredentialVerifyResponse,\n\ttype IIdentityVerifiablePresentationCreateRequest,\n\ttype IIdentityVerifiablePresentationCreateResponse,\n\ttype IIdentityVerifiablePresentationVerifyRequest,\n\ttype IIdentityVerifiablePresentationVerifyResponse,\n\ttype IIdentityVerificationMethodCreateRequest,\n\ttype IIdentityVerificationMethodCreateResponse,\n\ttype IIdentityVerificationMethodRemoveRequest\n} from \"@twin.org/identity-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport { DidContexts, type IDidVerifiableCredential } from \"@twin.org/standards-w3c-did\";\nimport { HttpStatusCode } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"identityRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const tagsIdentity: ITag[] = [\n\t{\n\t\tname: \"Identity\",\n\t\tdescription: \"Service to provide all features related to digital identity.\"\n\t}\n];\n\n/**\n * The REST routes for identity.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesIdentity(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst identityCreateRoute: IRestRoute<IIdentityCreateRequest, IIdentityCreateResponse> = {\n\t\toperationId: \"identityCreate\",\n\t\tsummary: \"Create an identity\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityCreateRequestExample\",\n\t\t\t\t\trequest: {}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DidContexts.Context,\n\t\t\t\t\t\t\t\tid: \"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\",\n\t\t\t\t\t\t\t\tservice: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"RevocationBitmap2022\",\n\t\t\t\t\t\t\t\t\t\tserviceEndpoint: \"data:application/octet-stream;base64,eJyzMmAAAwABr\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityRemoveRoute: IRestRoute<IIdentityRemoveRequest, INoContentResponse> = {\n\t\toperationId: \"identityRemove\",\n\t\tsummary: \"Remove an identity\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:identity`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerificationMethodCreateRoute: IRestRoute<\n\t\tIIdentityVerificationMethodCreateRequest,\n\t\tIIdentityVerificationMethodCreateResponse\n\t> = {\n\t\toperationId: \"identityVerificationMethodCreate\",\n\t\tsummary: \"Create an identity verification method\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/verification-method`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerificationMethodCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerificationMethodCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerificationMethodCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tverificationMethodType: \"assertionMethod\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerificationMethodCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerificationMethodCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tid: \"did:iota:tst:0x70ce5abe69e7c56dd69684dd6da65812b9758b03a0081331ca560b34d73d5ff0#my-assertion\",\n\t\t\t\t\t\t\t\tcontroller:\n\t\t\t\t\t\t\t\t\t\"did:iota:tst:0x70ce5abe69e7c56dd69684dd6da65812b9758b03a0081331ca560b34d73d5ff0\",\n\t\t\t\t\t\t\t\ttype: \"JsonWebKey2020\",\n\t\t\t\t\t\t\t\tpublicKeyJwk: {\n\t\t\t\t\t\t\t\t\tkty: \"OKP\",\n\t\t\t\t\t\t\t\t\talg: \"EdDSA\",\n\t\t\t\t\t\t\t\t\tkid: \"f_fj3rGsZFSYvnS_xv5MgyIBlExq-lgDciu0YQ--S3s\",\n\t\t\t\t\t\t\t\t\tcrv: \"Ed25519\",\n\t\t\t\t\t\t\t\t\tx: \"SFm32z7y9C17olpaTeocG25WV2CNTUl5MhM679Z4bok\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerificationMethodRemoveRoute: IRestRoute<\n\t\tIIdentityVerificationMethodRemoveRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityVerificationMethodRemove\",\n\t\tsummary: \"Remove an identity verification method\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:identity/verification-method/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerificationMethodRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerificationMethodRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerificationMethodRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerificationMethodCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityServiceCreateRoute: IRestRoute<\n\t\tIIdentityServiceCreateRequest,\n\t\tIIdentityServiceCreateResponse\n\t> = {\n\t\toperationId: \"identityServiceCreate\",\n\t\tsummary: \"Create an identity service\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/service`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityServiceCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityServiceCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityServiceCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tserviceId: \"did:example:123#linked-domain\",\n\t\t\t\t\t\t\ttype: \"LinkedDomains\",\n\t\t\t\t\t\t\tendpoint: \"https://bar.example.com\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityServiceCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tid: \"did:example:123#linked-domain\",\n\t\t\t\t\t\t\t\ttype: \"LinkedDomains\",\n\t\t\t\t\t\t\t\tserviceEndpoint: \"https://bar.example.com\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityServiceRemoveRoute: IRestRoute<IIdentityServiceRemoveRequest, INoContentResponse> =\n\t\t{\n\t\t\toperationId: \"identityServiceRemove\",\n\t\t\tsummary: \"Remove an identity service\",\n\t\t\ttag: tagsIdentity[0].name,\n\t\t\tmethod: \"DELETE\",\n\t\t\tpath: `${baseRouteName}/:identity/service/:serviceId`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tidentityServiceRemove(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IIdentityServiceRemoveRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceRemoveRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\",\n\t\t\t\t\t\t\t\tserviceId: \"did:example:123#linked-domain\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"identityServiceCreateResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\tconst identityVerifiableCredentialCreateRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialCreateRequest,\n\t\tIIdentityVerifiableCredentialCreateResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialCreate\",\n\t\tsummary: \"Create an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-credential/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tcredentialId: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\tsubject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\"@type\": \"Person\",\n\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trevocationIndex: 5\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiableCredentialCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiableCredentialCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tverifiableCredential: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"Person\"],\n\t\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tissuer:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\t\t\tissuanceDate: \"2025-01-24T09:21:51.500Z\",\n\t\t\t\t\t\t\t\t\tcredentialStatus: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"BitstringStatusList\",\n\t\t\t\t\t\t\t\t\t\trevocationBitmapIndex: \"5\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiableCredentialVerifyRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialVerifyRequest,\n\t\tIIdentityVerifiableCredentialVerifyResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialVerify\",\n\t\tsummary: \"Verify an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/verifiable-credential/verify`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialVerify(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialVerifyRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialVerifyRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiableCredentialVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiableCredentialVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\trevoked: false,\n\t\t\t\t\t\t\t\tverifiableCredential: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"Person\"],\n\t\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tissuer:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\t\t\tissuanceDate: \"2025-01-24T09:21:51.500Z\",\n\t\t\t\t\t\t\t\t\tcredentialStatus: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"BitstringStatusList\",\n\t\t\t\t\t\t\t\t\t\trevocationBitmapIndex: \"5\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst identityVerifiableCredentialRevokeRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialRevokeRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialRevoke\",\n\t\tsummary: \"Revoke an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-credential/revoke/:revocationIndex`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialRevoke(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialRevokeRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialRevokeRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\trevocationIndex: \"5\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceRevokeResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiableCredentialUnrevokeRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialUnrevokeRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialUnrevoke\",\n\t\tsummary: \"Unrevoke an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-credential/unrevoke/:revocationIndex`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialUnrevoke(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialUnrevokeRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialUnrevokeRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\trevocationIndex: \"5\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceUnrevokeResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiablePresentationCreateRoute: IRestRoute<\n\t\tIIdentityVerifiablePresentationCreateRequest,\n\t\tIIdentityVerifiablePresentationCreateResponse\n\t> = {\n\t\toperationId: \"identityVerifiablePresentationCreate\",\n\t\tsummary: \"Create an identity verifiable presentation\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-presentation/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiablePresentationCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiablePresentationCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiablePresentationCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tpresentationId: \"https://example.com/presentation/3732\",\n\t\t\t\t\t\t\tverifiableCredentials: [\"eyJraWQiOi...D1Z3AQ\"]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiablePresentationCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IIdentityVerifiablePresentationCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tverifiablePresentation: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"presentationId\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiablePresentation\", \"Person\"],\n\t\t\t\t\t\t\t\t\tverifiableCredential: [\"eyJraWQiOi...D1Z3AQ\"],\n\t\t\t\t\t\t\t\t\tholder:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0xcea318e06e89f3fb4048160770effd84d0cfa5801fee13dfa6f9413a00429cec\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiablePresentationVerifyRoute: IRestRoute<\n\t\tIIdentityVerifiablePresentationVerifyRequest,\n\t\tIIdentityVerifiablePresentationVerifyResponse\n\t> = {\n\t\toperationId: \"identityVerifiablePresentationVerify\",\n\t\tsummary: \"Verify an identity verifiable presentation\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/verifiable-presentation/verify`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiablePresentationVerify(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiablePresentationVerifyRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiablePresentationVerifyRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiablePresentationVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiablePresentationVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\trevoked: false,\n\t\t\t\t\t\t\t\tverifiablePresentation: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"presentationId\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiablePresentation\", \"Person\"],\n\t\t\t\t\t\t\t\t\tverifiableCredential: [\"eyJraWQiOi...D1Z3AQ\"],\n\t\t\t\t\t\t\t\t\tholder:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0xcea318e06e89f3fb4048160770effd84d0cfa5801fee13dfa6f9413a00429cec\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst identityProofCreateRoute: IRestRoute<\n\t\tIIdentityProofCreateRequest,\n\t\tIIdentityProofCreateResponse\n\t> = {\n\t\toperationId: \"identityProofCreate\",\n\t\tsummary: \"Create an identity proof\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/proof/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityProofCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityProofCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityProofCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0xda2df3ebc91ee0d5229d6532ffd0f4426952a94f34988b0ca906694dfd366a6a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-verification-id\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tproofType: \"DataIntegrityProof\",\n\t\t\t\t\t\t\tdocument: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/v1\",\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/examples/v1\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tid: \"urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33\",\n\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"AlumniCredential\"],\n\t\t\t\t\t\t\t\tname: \"Alumni Credential\",\n\t\t\t\t\t\t\t\tdescription: \"A minimum viable example of an Alumni Credential.\",\n\t\t\t\t\t\t\t\tissuer: \"https://vc.example/issuers/5678\",\n\t\t\t\t\t\t\t\tvalidFrom: \"2023-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\tid: \"did:example:abcdefgh\",\n\t\t\t\t\t\t\t\t\talumniOf: \"The School of Examples\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityProofCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityProofCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\"https://w3id.org/security/data-integrity/v2\",\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/ns/credentials/examples/v2\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: \"DataIntegrityProof\",\n\t\t\t\t\t\t\t\tcryptosuite: \"eddsa-jcs-2022\",\n\t\t\t\t\t\t\t\tcreated: \"2024-01-31T16:00:45.490Z\",\n\t\t\t\t\t\t\t\tverificationMethod:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x0101010101010101010101010101010101010101010101010101010101010101#my-verification-id\",\n\t\t\t\t\t\t\t\tproofPurpose: \"assertionMethod\",\n\t\t\t\t\t\t\t\tproofValue:\n\t\t\t\t\t\t\t\t\t\"z2zGoejwpX6HH2T11BZaniEVZrqRKDpwbQSvPcL7eL9M7hV5P9zQQZxs85n6qyDzkkXCL8aFUWfwQD5bxVGqDK1fa\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityProofVerifyRoute: IRestRoute<\n\t\tIIdentityProofVerifyRequest,\n\t\tIIdentityProofVerifyResponse\n\t> = {\n\t\toperationId: \"identityProofVerify\",\n\t\tsummary: \"Verify an identity proof\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/proof/verify`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityProofVerify(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityProofVerifyRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityProofVerifyRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tdocument: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/v1\",\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/examples/v1\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tid: \"urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33\",\n\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"AlumniCredential\"],\n\t\t\t\t\t\t\t\tname: \"Alumni Credential\",\n\t\t\t\t\t\t\t\tdescription: \"A minimum viable example of an Alumni Credential.\",\n\t\t\t\t\t\t\t\tissuer: \"https://vc.example/issuers/5678\",\n\t\t\t\t\t\t\t\tvalidFrom: \"2023-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\tid: \"did:example:abcdefgh\",\n\t\t\t\t\t\t\t\t\talumniOf: \"The School of Examples\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://w3id.org/security/data-integrity/v2\",\n\t\t\t\t\t\t\t\ttype: \"DataIntegrityProof\",\n\t\t\t\t\t\t\t\tcryptosuite: \"eddsa-jcs-2022\",\n\t\t\t\t\t\t\t\tcreated: \"2025-01-24T11:32:13.106Z\",\n\t\t\t\t\t\t\t\tverificationMethod:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0xda2df3ebc91ee0d5229d6532ffd0f4426952a94f34988b0ca906694dfd366a6a#my-verification-id\",\n\t\t\t\t\t\t\t\tproofPurpose: \"assertionMethod\",\n\t\t\t\t\t\t\t\tproofValue:\n\t\t\t\t\t\t\t\t\t\"2fVLgANruCBoRPBCJavi54mZtkQdyMz6T2N4XVyB96asawiriKrVWoktcSQ7dMGrBTiemBBDpcLE2HfiTBCGuBmq\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityProofVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityProofVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tverified: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\treturn [\n\t\tidentityCreateRoute,\n\t\tidentityRemoveRoute,\n\t\tidentityVerificationMethodCreateRoute,\n\t\tidentityVerificationMethodRemoveRoute,\n\t\tidentityServiceCreateRoute,\n\t\tidentityServiceRemoveRoute,\n\t\tidentityVerifiableCredentialCreateRoute,\n\t\tidentityVerifiableCredentialVerifyRoute,\n\t\tidentityVerifiableCredentialRevokeRoute,\n\t\tidentityVerifiableCredentialUnrevokeRoute,\n\t\tidentityVerifiablePresentationCreateRoute,\n\t\tidentityVerifiablePresentationVerifyRoute,\n\t\tidentityProofCreateRoute,\n\t\tidentityProofVerifyRoute\n\t];\n}\n\n/**\n * Create an identity.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityCreateRequest\n): Promise<IIdentityCreateResponse> {\n\tGuards.object<IIdentityCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.identityCreate(\n\t\trequest.body?.namespace,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Remove an identity.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.identityRemove(\n\t\trequest.pathParams.identity,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create an identity verification method.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerificationMethodCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerificationMethodCreateRequest\n): Promise<IIdentityVerificationMethodCreateResponse> {\n\tGuards.object<IIdentityVerificationMethodCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityVerificationMethodCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verificationMethodCreate(\n\t\trequest.pathParams.identity,\n\t\trequest.body.verificationMethodType,\n\t\trequest.body.verificationMethodId,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Remove an identity verification method.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerificationMethodRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerificationMethodRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityVerificationMethodRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityVerificationMethodRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.verificationMethodRemove(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.verificationMethodId),\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create an identity service.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityServiceCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityServiceCreateRequest\n): Promise<IIdentityServiceCreateResponse> {\n\tGuards.object<IIdentityServiceCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityServiceCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.serviceCreate(\n\t\trequest.pathParams.identity,\n\t\trequest.body.serviceId,\n\t\trequest.body.type,\n\t\trequest.body.endpoint,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Remove an identity service.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityServiceRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityServiceRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityServiceRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityServiceRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.serviceId),\n\t\trequest.pathParams.serviceId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.serviceRemove(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.serviceId),\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialCreateRequest\n): Promise<IIdentityVerifiableCredentialCreateResponse> {\n\tGuards.object<IIdentityVerifiableCredentialCreateRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiableCredentialCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiableCredentialCreate(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.verificationMethodId),\n\t\trequest.body.credentialId,\n\t\trequest.body.subject,\n\t\t{\n\t\t\trevocationIndex: request.body.revocationIndex,\n\t\t\texpirationDate: Coerce.dateTime(request.body.expirationDate)\n\t\t},\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialVerify(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialVerifyRequest\n): Promise<IIdentityVerifiableCredentialVerifyResponse> {\n\tGuards.object<IIdentityVerifiableCredentialVerifyRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\n\tlet credential: string | IDidVerifiableCredential;\n\tif (Is.object(request.query)) {\n\t\tGuards.object<IIdentityVerifiableCredentialVerifyRequest[\"query\"]>(\n\t\t\tROUTES_SOURCE,\n\t\t\tnameof(request.query),\n\t\t\trequest.query\n\t\t);\n\t\tGuards.stringValue(ROUTES_SOURCE, nameof(request.query.jwt), request.query.jwt);\n\t\tcredential = request.query.jwt;\n\t} else {\n\t\tGuards.object<IIdentityVerifiableCredentialVerifyRequest[\"body\"]>(\n\t\t\tROUTES_SOURCE,\n\t\t\tnameof(request.body),\n\t\t\trequest.body\n\t\t);\n\t\tGuards.object<IDidVerifiableCredential>(\n\t\t\tROUTES_SOURCE,\n\t\t\tnameof(request.body?.credential),\n\t\t\trequest.body?.credential\n\t\t);\n\t\tcredential = request.body?.credential;\n\t}\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiableCredentialVerify(credential);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Revoke a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialRevoke(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialRevokeRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityVerifiableCredentialRevokeRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiableCredentialRevokeRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst revocationIndex = Coerce.number(request.pathParams.revocationIndex);\n\tGuards.integer(ROUTES_SOURCE, nameof(request.pathParams.revocationIndex), revocationIndex);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.verifiableCredentialRevoke(\n\t\trequest.pathParams.identity,\n\t\trevocationIndex,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Unrevoke a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialUnrevoke(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialUnrevokeRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityVerifiableCredentialUnrevokeRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiableCredentialUnrevokeRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst revocationIndex = Coerce.number(request.pathParams.revocationIndex);\n\tGuards.integer(ROUTES_SOURCE, nameof(request.pathParams.revocationIndex), revocationIndex);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.verifiableCredentialUnrevoke(\n\t\trequest.pathParams.identity,\n\t\trevocationIndex,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create a verifiable presentation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiablePresentationCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiablePresentationCreateRequest\n): Promise<IIdentityVerifiablePresentationCreateResponse> {\n\tGuards.object<IIdentityVerifiablePresentationCreateRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiablePresentationCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiablePresentationCreate(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.verificationMethodId),\n\t\trequest.body.presentationId,\n\t\trequest.body.contexts,\n\t\trequest.body.types,\n\t\trequest.body.verifiableCredentials,\n\t\t{ expirationDate: Coerce.dateTime(request.body.expirationDate) },\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify a verifiable presentation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiablePresentationVerify(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiablePresentationVerifyRequest\n): Promise<IIdentityVerifiablePresentationVerifyResponse> {\n\tGuards.object<IIdentityVerifiablePresentationVerifyRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiablePresentationVerifyRequest[\"query\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.query),\n\t\trequest.query\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.query.jwt), request.query.jwt);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiablePresentationVerify(request.query.jwt);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Create an identity proof.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityProofCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityProofCreateRequest\n): Promise<IIdentityProofCreateResponse> {\n\tGuards.object<IIdentityProofCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityProofCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\tGuards.object<IIdentityProofCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.proofCreate(\n\t\trequest.pathParams.identity,\n\t\trequest.body.proofType,\n\t\trequest.body.document,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify an identity proof.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityProofVerify(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityProofVerifyRequest\n): Promise<IIdentityProofVerifyResponse> {\n\tGuards.object<IIdentityProofVerifyRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityProofCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.proofVerify(request.body.document, request.body.proof);\n\n\treturn {\n\t\tbody: {\n\t\t\tverified: result\n\t\t}\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"identityRoutes.js","sourceRoot":"","sources":["../../src/identityRoutes.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2024 IOTA Stiftung.\n// SPDX-License-Identifier: Apache-2.0.\nimport type {\n\tIHttpRequestContext,\n\tINoContentResponse,\n\tIRestRoute,\n\tITag\n} from \"@twin.org/api-models\";\nimport { ContextIdHelper, ContextIdKeys, ContextIdStore } from \"@twin.org/context\";\nimport { Coerce, ComponentFactory, Guards } from \"@twin.org/core\";\nimport {\n\tDocumentHelper,\n\ttype IIdentityComponent,\n\ttype IIdentityCreateRequest,\n\ttype IIdentityCreateResponse,\n\ttype IIdentityProofCreateRequest,\n\ttype IIdentityProofCreateResponse,\n\ttype IIdentityProofVerifyRequest,\n\ttype IIdentityProofVerifyResponse,\n\ttype IIdentityRemoveRequest,\n\ttype IIdentityServiceCreateRequest,\n\ttype IIdentityServiceCreateResponse,\n\ttype IIdentityServiceRemoveRequest,\n\ttype IIdentityVerifiableCredentialCreateRequest,\n\ttype IIdentityVerifiableCredentialCreateResponse,\n\ttype IIdentityVerifiableCredentialRevokeRequest,\n\ttype IIdentityVerifiableCredentialUnrevokeRequest,\n\ttype IIdentityVerifiableCredentialVerifyRequest,\n\ttype IIdentityVerifiableCredentialVerifyDocumentRequest,\n\ttype IIdentityVerifiableCredentialVerifyResponse,\n\ttype IIdentityVerifiablePresentationCreateRequest,\n\ttype IIdentityVerifiablePresentationCreateResponse,\n\ttype IIdentityVerifiablePresentationVerifyRequest,\n\ttype IIdentityVerifiablePresentationVerifyResponse,\n\ttype IIdentityVerificationMethodCreateRequest,\n\ttype IIdentityVerificationMethodCreateResponse,\n\ttype IIdentityVerificationMethodRemoveRequest\n} from \"@twin.org/identity-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport { DidContexts, type IDidVerifiableCredential } from \"@twin.org/standards-w3c-did\";\nimport { HttpStatusCode } from \"@twin.org/web\";\n\n/**\n * The source used when communicating about these routes.\n */\nconst ROUTES_SOURCE = \"identityRoutes\";\n\n/**\n * The tag to associate with the routes.\n */\nexport const tagsIdentity: ITag[] = [\n\t{\n\t\tname: \"Identity\",\n\t\tdescription: \"Service to provide all features related to digital identity.\"\n\t}\n];\n\n/**\n * The REST routes for identity.\n * @param baseRouteName Prefix to prepend to the paths.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @returns The generated routes.\n */\nexport function generateRestRoutesIdentity(\n\tbaseRouteName: string,\n\tcomponentName: string\n): IRestRoute[] {\n\tconst identityCreateRoute: IRestRoute<IIdentityCreateRequest, IIdentityCreateResponse> = {\n\t\toperationId: \"identityCreate\",\n\t\tsummary: \"Create an identity\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityCreateRequestExample\",\n\t\t\t\t\trequest: {}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": DidContexts.Context,\n\t\t\t\t\t\t\t\tid: \"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\",\n\t\t\t\t\t\t\t\tservice: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tid: \"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"RevocationBitmap2022\",\n\t\t\t\t\t\t\t\t\t\tserviceEndpoint: \"data:application/octet-stream;base64,eJyzMmAAAwABr\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityRemoveRoute: IRestRoute<IIdentityRemoveRequest, INoContentResponse> = {\n\t\toperationId: \"identityRemove\",\n\t\tsummary: \"Remove an identity\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:identity`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>()\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerificationMethodCreateRoute: IRestRoute<\n\t\tIIdentityVerificationMethodCreateRequest,\n\t\tIIdentityVerificationMethodCreateResponse\n\t> = {\n\t\toperationId: \"identityVerificationMethodCreate\",\n\t\tsummary: \"Create an identity verification method\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/verification-method`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerificationMethodCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerificationMethodCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerificationMethodCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tverificationMethodType: \"assertionMethod\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerificationMethodCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerificationMethodCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tid: \"did:iota:tst:0x70ce5abe69e7c56dd69684dd6da65812b9758b03a0081331ca560b34d73d5ff0#my-assertion\",\n\t\t\t\t\t\t\t\tcontroller:\n\t\t\t\t\t\t\t\t\t\"did:iota:tst:0x70ce5abe69e7c56dd69684dd6da65812b9758b03a0081331ca560b34d73d5ff0\",\n\t\t\t\t\t\t\t\ttype: \"JsonWebKey2020\",\n\t\t\t\t\t\t\t\tpublicKeyJwk: {\n\t\t\t\t\t\t\t\t\tkty: \"OKP\",\n\t\t\t\t\t\t\t\t\talg: \"EdDSA\",\n\t\t\t\t\t\t\t\t\tkid: \"f_fj3rGsZFSYvnS_xv5MgyIBlExq-lgDciu0YQ--S3s\",\n\t\t\t\t\t\t\t\t\tcrv: \"Ed25519\",\n\t\t\t\t\t\t\t\t\tx: \"SFm32z7y9C17olpaTeocG25WV2CNTUl5MhM679Z4bok\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerificationMethodRemoveRoute: IRestRoute<\n\t\tIIdentityVerificationMethodRemoveRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityVerificationMethodRemove\",\n\t\tsummary: \"Remove an identity verification method\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:identity/verification-method/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerificationMethodRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerificationMethodRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerificationMethodRemoveRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerificationMethodCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityServiceCreateRoute: IRestRoute<\n\t\tIIdentityServiceCreateRequest,\n\t\tIIdentityServiceCreateResponse\n\t> = {\n\t\toperationId: \"identityServiceCreate\",\n\t\tsummary: \"Create an identity service\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/service`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityServiceCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityServiceCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityServiceCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tserviceId: \"did:example:123#linked-domain\",\n\t\t\t\t\t\t\ttype: \"LinkedDomains\",\n\t\t\t\t\t\t\tendpoint: \"https://bar.example.com\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityServiceCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tid: \"did:example:123#linked-domain\",\n\t\t\t\t\t\t\t\ttype: \"LinkedDomains\",\n\t\t\t\t\t\t\t\tserviceEndpoint: \"https://bar.example.com\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityServiceRemoveRoute: IRestRoute<IIdentityServiceRemoveRequest, INoContentResponse> =\n\t\t{\n\t\t\toperationId: \"identityServiceRemove\",\n\t\t\tsummary: \"Remove an identity service\",\n\t\t\ttag: tagsIdentity[0].name,\n\t\t\tmethod: \"DELETE\",\n\t\t\tpath: `${baseRouteName}/:identity/service/:serviceId`,\n\t\t\thandler: async (httpRequestContext, request) =>\n\t\t\t\tidentityServiceRemove(httpRequestContext, componentName, request),\n\t\t\trequestType: {\n\t\t\t\ttype: nameof<IIdentityServiceRemoveRequest>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceRemoveRequestExample\",\n\t\t\t\t\t\trequest: {\n\t\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\t\"did:iota:tst:0xe3088ba9aa8c28e1d139708a14e8c0fdff11ee8223baac4aa5bcf3321e4bfc6a\",\n\t\t\t\t\t\t\t\tserviceId: \"did:example:123#linked-domain\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tresponseType: [\n\t\t\t\t{\n\t\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\t\texamples: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"identityServiceCreateResponseExample\",\n\t\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\tconst identityVerifiableCredentialCreateRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialCreateRequest,\n\t\tIIdentityVerifiableCredentialCreateResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialCreate\",\n\t\tsummary: \"Create an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-credential/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tcredentialId: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\tsubject: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://schema.org\",\n\t\t\t\t\t\t\t\t\"@type\": \"Person\",\n\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trevocationIndex: 5\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiableCredentialCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiableCredentialCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tverifiableCredential: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"Person\"],\n\t\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tissuer:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\t\t\tissuanceDate: \"2025-01-24T09:21:51.500Z\",\n\t\t\t\t\t\t\t\t\tcredentialStatus: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"BitstringStatusList\",\n\t\t\t\t\t\t\t\t\t\trevocationBitmapIndex: \"5\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiableCredentialVerifyRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialVerifyRequest,\n\t\tIIdentityVerifiableCredentialVerifyResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialVerify\",\n\t\tsummary: \"Verify an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/verifiable-credential/verify`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialVerify(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialVerifyRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialVerifyRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiableCredentialVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiableCredentialVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\trevoked: false,\n\t\t\t\t\t\t\t\tverifiableCredential: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"Person\"],\n\t\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tissuer:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\t\t\tissuanceDate: \"2025-01-24T09:21:51.500Z\",\n\t\t\t\t\t\t\t\t\tcredentialStatus: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"BitstringStatusList\",\n\t\t\t\t\t\t\t\t\t\trevocationBitmapIndex: \"5\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst identityVerifiableCredentialVerifyDocumentRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialVerifyDocumentRequest,\n\t\tIIdentityVerifiableCredentialVerifyResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialVerifyDocument\",\n\t\tsummary: \"Verify an identity verifiable credential document\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/verifiable-credential/verify/document`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialVerifyDocument(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialVerifyDocumentRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialVerifyDocumentRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\tid: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"Person\"],\n\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tissuer:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\tissuanceDate: \"2025-01-24T09:21:51.500Z\",\n\t\t\t\t\t\t\tcredentialStatus: {\n\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation\",\n\t\t\t\t\t\t\t\ttype: \"BitstringStatusList\",\n\t\t\t\t\t\t\t\trevocationBitmapIndex: \"5\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiableCredentialVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiableCredentialVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\trevoked: false,\n\t\t\t\t\t\t\t\tverifiableCredential: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"https://example.com/credentials/3732\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"Person\"],\n\t\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def\",\n\t\t\t\t\t\t\t\t\t\tname: \"Jane Doe\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tissuer:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\t\t\tissuanceDate: \"2025-01-24T09:21:51.500Z\",\n\t\t\t\t\t\t\t\t\tcredentialStatus: {\n\t\t\t\t\t\t\t\t\t\tid: \"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation\",\n\t\t\t\t\t\t\t\t\t\ttype: \"BitstringStatusList\",\n\t\t\t\t\t\t\t\t\t\trevocationBitmapIndex: \"5\"\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst identityVerifiableCredentialRevokeRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialRevokeRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialRevoke\",\n\t\tsummary: \"Revoke an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-credential/revoke/:revocationIndex`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialRevoke(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialRevokeRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialRevokeRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\trevocationIndex: \"5\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceRevokeResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiableCredentialUnrevokeRoute: IRestRoute<\n\t\tIIdentityVerifiableCredentialUnrevokeRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityVerifiableCredentialUnrevoke\",\n\t\tsummary: \"Unrevoke an identity verifiable credential\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-credential/unrevoke/:revocationIndex`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiableCredentialUnrevoke(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiableCredentialUnrevokeRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiableCredentialUnrevokeRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\trevocationIndex: \"5\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<INoContentResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityServiceUnrevokeResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tstatusCode: HttpStatusCode.noContent\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiablePresentationCreateRoute: IRestRoute<\n\t\tIIdentityVerifiablePresentationCreateRequest,\n\t\tIIdentityVerifiablePresentationCreateResponse\n\t> = {\n\t\toperationId: \"identityVerifiablePresentationCreate\",\n\t\tsummary: \"Create an identity verifiable presentation\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/verifiable-presentation/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiablePresentationCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiablePresentationCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiablePresentationCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-assertion\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tpresentationId: \"https://example.com/presentation/3732\",\n\t\t\t\t\t\t\tverifiableCredentials: [\"eyJraWQiOi...D1Z3AQ\"]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiablePresentationCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"IIdentityVerifiablePresentationCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tverifiablePresentation: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"presentationId\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiablePresentation\", \"Person\"],\n\t\t\t\t\t\t\t\t\tverifiableCredential: [\"eyJraWQiOi...D1Z3AQ\"],\n\t\t\t\t\t\t\t\t\tholder:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0xcea318e06e89f3fb4048160770effd84d0cfa5801fee13dfa6f9413a00429cec\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityVerifiablePresentationVerifyRoute: IRestRoute<\n\t\tIIdentityVerifiablePresentationVerifyRequest,\n\t\tIIdentityVerifiablePresentationVerifyResponse\n\t> = {\n\t\toperationId: \"identityVerifiablePresentationVerify\",\n\t\tsummary: \"Verify an identity verifiable presentation\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"GET\",\n\t\tpath: `${baseRouteName}/verifiable-presentation/verify`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiablePresentationVerify(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiablePresentationVerifyRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiablePresentationVerifyRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tjwt: \"eyJraWQiOi...D1Z3AQ\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityVerifiablePresentationVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityVerifiablePresentationVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\trevoked: false,\n\t\t\t\t\t\t\t\tverifiablePresentation: {\n\t\t\t\t\t\t\t\t\t\"@context\": [\"https://www.w3.org/2018/credentials/v1\", \"https://schema.org\"],\n\t\t\t\t\t\t\t\t\tid: \"presentationId\",\n\t\t\t\t\t\t\t\t\ttype: [\"VerifiablePresentation\", \"Person\"],\n\t\t\t\t\t\t\t\t\tverifiableCredential: [\"eyJraWQiOi...D1Z3AQ\"],\n\t\t\t\t\t\t\t\t\tholder:\n\t\t\t\t\t\t\t\t\t\t\"did:entity-storage:0xcea318e06e89f3fb4048160770effd84d0cfa5801fee13dfa6f9413a00429cec\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\tconst identityProofCreateRoute: IRestRoute<\n\t\tIIdentityProofCreateRequest,\n\t\tIIdentityProofCreateResponse\n\t> = {\n\t\toperationId: \"identityProofCreate\",\n\t\tsummary: \"Create an identity proof\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/proof/:verificationMethodId`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityProofCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityProofCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityProofCreateRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tpathParams: {\n\t\t\t\t\t\t\tidentity:\n\t\t\t\t\t\t\t\t\"did:entity-storage:0xda2df3ebc91ee0d5229d6532ffd0f4426952a94f34988b0ca906694dfd366a6a\",\n\t\t\t\t\t\t\tverificationMethodId: \"my-verification-id\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tproofType: \"DataIntegrityProof\",\n\t\t\t\t\t\t\tdocument: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/v1\",\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/examples/v1\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tid: \"urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33\",\n\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"AlumniCredential\"],\n\t\t\t\t\t\t\t\tname: \"Alumni Credential\",\n\t\t\t\t\t\t\t\tdescription: \"A minimum viable example of an Alumni Credential.\",\n\t\t\t\t\t\t\t\tissuer: \"https://vc.example/issuers/5678\",\n\t\t\t\t\t\t\t\tvalidFrom: \"2023-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\tid: \"did:example:abcdefgh\",\n\t\t\t\t\t\t\t\t\talumniOf: \"The School of Examples\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityProofCreateResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityProofCreateResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\"https://w3id.org/security/data-integrity/v2\",\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/ns/credentials/examples/v2\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\ttype: \"DataIntegrityProof\",\n\t\t\t\t\t\t\t\tcryptosuite: \"eddsa-jcs-2022\",\n\t\t\t\t\t\t\t\tcreated: \"2024-01-31T16:00:45.490Z\",\n\t\t\t\t\t\t\t\tverificationMethod:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0x0101010101010101010101010101010101010101010101010101010101010101#my-verification-id\",\n\t\t\t\t\t\t\t\tproofPurpose: \"assertionMethod\",\n\t\t\t\t\t\t\t\tproofValue:\n\t\t\t\t\t\t\t\t\t\"z2zGoejwpX6HH2T11BZaniEVZrqRKDpwbQSvPcL7eL9M7hV5P9zQQZxs85n6qyDzkkXCL8aFUWfwQD5bxVGqDK1fa\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n\n\tconst identityProofVerifyRoute: IRestRoute<\n\t\tIIdentityProofVerifyRequest,\n\t\tIIdentityProofVerifyResponse\n\t> = {\n\t\toperationId: \"identityProofVerify\",\n\t\tsummary: \"Verify an identity proof\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/proof/verify`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityProofVerify(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityProofVerifyRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityProofVerifyRequestExample\",\n\t\t\t\t\trequest: {\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tdocument: {\n\t\t\t\t\t\t\t\t\"@context\": [\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/v1\",\n\t\t\t\t\t\t\t\t\t\"https://www.w3.org/2018/credentials/examples/v1\"\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tid: \"urn:uuid:58172aac-d8ba-11ed-83dd-0b3aef56cc33\",\n\t\t\t\t\t\t\t\ttype: [\"VerifiableCredential\", \"AlumniCredential\"],\n\t\t\t\t\t\t\t\tname: \"Alumni Credential\",\n\t\t\t\t\t\t\t\tdescription: \"A minimum viable example of an Alumni Credential.\",\n\t\t\t\t\t\t\t\tissuer: \"https://vc.example/issuers/5678\",\n\t\t\t\t\t\t\t\tvalidFrom: \"2023-01-01T00:00:00Z\",\n\t\t\t\t\t\t\t\tcredentialSubject: {\n\t\t\t\t\t\t\t\t\tid: \"did:example:abcdefgh\",\n\t\t\t\t\t\t\t\t\talumniOf: \"The School of Examples\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tproof: {\n\t\t\t\t\t\t\t\t\"@context\": \"https://w3id.org/security/data-integrity/v2\",\n\t\t\t\t\t\t\t\ttype: \"DataIntegrityProof\",\n\t\t\t\t\t\t\t\tcryptosuite: \"eddsa-jcs-2022\",\n\t\t\t\t\t\t\t\tcreated: \"2025-01-24T11:32:13.106Z\",\n\t\t\t\t\t\t\t\tverificationMethod:\n\t\t\t\t\t\t\t\t\t\"did:entity-storage:0xda2df3ebc91ee0d5229d6532ffd0f4426952a94f34988b0ca906694dfd366a6a#my-verification-id\",\n\t\t\t\t\t\t\t\tproofPurpose: \"assertionMethod\",\n\t\t\t\t\t\t\t\tproofValue:\n\t\t\t\t\t\t\t\t\t\"2fVLgANruCBoRPBCJavi54mZtkQdyMz6T2N4XVyB96asawiriKrVWoktcSQ7dMGrBTiemBBDpcLE2HfiTBCGuBmq\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\tresponseType: [\n\t\t\t{\n\t\t\t\ttype: nameof<IIdentityProofVerifyResponse>(),\n\t\t\t\texamples: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"identityProofVerifyResponseExample\",\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\t\tverified: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t],\n\t\tskipAuth: true\n\t};\n\n\treturn [\n\t\tidentityCreateRoute,\n\t\tidentityRemoveRoute,\n\t\tidentityVerificationMethodCreateRoute,\n\t\tidentityVerificationMethodRemoveRoute,\n\t\tidentityServiceCreateRoute,\n\t\tidentityServiceRemoveRoute,\n\t\tidentityVerifiableCredentialCreateRoute,\n\t\tidentityVerifiableCredentialVerifyDocumentRoute,\n\t\tidentityVerifiableCredentialVerifyRoute,\n\t\tidentityVerifiableCredentialRevokeRoute,\n\t\tidentityVerifiableCredentialUnrevokeRoute,\n\t\tidentityVerifiablePresentationCreateRoute,\n\t\tidentityVerifiablePresentationVerifyRoute,\n\t\tidentityProofCreateRoute,\n\t\tidentityProofVerifyRoute\n\t];\n}\n\n/**\n * Create an identity.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityCreateRequest\n): Promise<IIdentityCreateResponse> {\n\tGuards.object<IIdentityCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.identityCreate(\n\t\trequest.body?.namespace,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Remove an identity.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.identityRemove(\n\t\trequest.pathParams.identity,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create an identity verification method.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerificationMethodCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerificationMethodCreateRequest\n): Promise<IIdentityVerificationMethodCreateResponse> {\n\tGuards.object<IIdentityVerificationMethodCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityVerificationMethodCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verificationMethodCreate(\n\t\trequest.pathParams.identity,\n\t\trequest.body.verificationMethodType,\n\t\trequest.body.verificationMethodId,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Remove an identity verification method.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerificationMethodRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerificationMethodRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityVerificationMethodRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityVerificationMethodRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.verificationMethodRemove(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.verificationMethodId),\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create an identity service.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityServiceCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityServiceCreateRequest\n): Promise<IIdentityServiceCreateResponse> {\n\tGuards.object<IIdentityServiceCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityServiceCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.serviceCreate(\n\t\trequest.pathParams.identity,\n\t\trequest.body.serviceId,\n\t\trequest.body.type,\n\t\trequest.body.endpoint,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Remove an identity service.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityServiceRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityServiceRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityServiceRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityServiceRemoveRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.serviceId),\n\t\trequest.pathParams.serviceId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.serviceRemove(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.serviceId),\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialCreateRequest\n): Promise<IIdentityVerifiableCredentialCreateResponse> {\n\tGuards.object<IIdentityVerifiableCredentialCreateRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiableCredentialCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiableCredentialCreate(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.verificationMethodId),\n\t\trequest.body.credentialId,\n\t\trequest.body.subject,\n\t\t{\n\t\t\trevocationIndex: request.body.revocationIndex,\n\t\t\texpirationDate: Coerce.dateTime(request.body.expirationDate)\n\t\t},\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialVerify(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialVerifyRequest\n): Promise<IIdentityVerifiableCredentialVerifyResponse> {\n\tGuards.object<IIdentityVerifiableCredentialVerifyDocumentRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\n\tGuards.object<IIdentityVerifiableCredentialVerifyRequest[\"query\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.query),\n\t\trequest.query\n\t);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiableCredentialVerify(request.query?.jwt);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify a verifiable credential document.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialVerifyDocument(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialVerifyDocumentRequest\n): Promise<IIdentityVerifiableCredentialVerifyResponse> {\n\tGuards.object<IIdentityVerifiableCredentialVerifyDocumentRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\n\tGuards.object<IIdentityVerifiableCredentialVerifyDocumentRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\tGuards.object<IDidVerifiableCredential>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiableCredentialVerify(request.body);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Revoke a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialRevoke(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialRevokeRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityVerifiableCredentialRevokeRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiableCredentialRevokeRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst revocationIndex = Coerce.number(request.pathParams.revocationIndex);\n\tGuards.integer(ROUTES_SOURCE, nameof(request.pathParams.revocationIndex), revocationIndex);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.verifiableCredentialRevoke(\n\t\trequest.pathParams.identity,\n\t\trevocationIndex,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Unrevoke a verifiable credential.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiableCredentialUnrevoke(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiableCredentialUnrevokeRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityVerifiableCredentialUnrevokeRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiableCredentialUnrevokeRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\n\tconst revocationIndex = Coerce.number(request.pathParams.revocationIndex);\n\tGuards.integer(ROUTES_SOURCE, nameof(request.pathParams.revocationIndex), revocationIndex);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tawait component.verifiableCredentialUnrevoke(\n\t\trequest.pathParams.identity,\n\t\trevocationIndex,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Create a verifiable presentation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiablePresentationCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiablePresentationCreateRequest\n): Promise<IIdentityVerifiablePresentationCreateResponse> {\n\tGuards.object<IIdentityVerifiablePresentationCreateRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiablePresentationCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiablePresentationCreate(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.verificationMethodId),\n\t\trequest.body.presentationId,\n\t\trequest.body.contexts,\n\t\trequest.body.types,\n\t\trequest.body.verifiableCredentials,\n\t\t{ expirationDate: Coerce.dateTime(request.body.expirationDate) },\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify a verifiable presentation.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityVerifiablePresentationVerify(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiablePresentationVerifyRequest\n): Promise<IIdentityVerifiablePresentationVerifyResponse> {\n\tGuards.object<IIdentityVerifiablePresentationVerifyRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IIdentityVerifiablePresentationVerifyRequest[\"query\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.query),\n\t\trequest.query\n\t);\n\tGuards.stringValue(ROUTES_SOURCE, nameof(request.query.jwt), request.query.jwt);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiablePresentationVerify(request.query.jwt);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Create an identity proof.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityProofCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityProofCreateRequest\n): Promise<IIdentityProofCreateResponse> {\n\tGuards.object<IIdentityProofCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityProofCreateRequest[\"pathParams\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams),\n\t\trequest.pathParams\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.identity),\n\t\trequest.pathParams.identity\n\t);\n\tGuards.stringValue(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.pathParams.verificationMethodId),\n\t\trequest.pathParams.verificationMethodId\n\t);\n\tGuards.object<IIdentityProofCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst contextIds = await ContextIdStore.getContextIds();\n\tContextIdHelper.guard(contextIds, ContextIdKeys.Organization);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.proofCreate(\n\t\trequest.pathParams.identity,\n\t\trequest.body.proofType,\n\t\trequest.body.document,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tbody: result\n\t};\n}\n\n/**\n * Verify an identity proof.\n * @param httpRequestContext The request context for the API.\n * @param componentName The name of the component to use in the routes stored in the ComponentFactory.\n * @param request The request.\n * @returns The response object with additional http response properties.\n */\nexport async function identityProofVerify(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityProofVerifyRequest\n): Promise<IIdentityProofVerifyResponse> {\n\tGuards.object<IIdentityProofVerifyRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityProofCreateRequest[\"body\"]>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request.body),\n\t\trequest.body\n\t);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.proofVerify(request.body.document, request.body.proof);\n\n\treturn {\n\t\tbody: {\n\t\t\tverified: result\n\t\t}\n\t};\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IHttpRequestContext, INoContentResponse, IRestRoute, ITag } from "@twin.org/api-models";
|
|
2
|
-
import { type IIdentityCreateRequest, type IIdentityCreateResponse, type IIdentityProofCreateRequest, type IIdentityProofCreateResponse, type IIdentityProofVerifyRequest, type IIdentityProofVerifyResponse, type IIdentityRemoveRequest, type IIdentityServiceCreateRequest, type IIdentityServiceCreateResponse, type IIdentityServiceRemoveRequest, type IIdentityVerifiableCredentialCreateRequest, type IIdentityVerifiableCredentialCreateResponse, type IIdentityVerifiableCredentialRevokeRequest, type IIdentityVerifiableCredentialUnrevokeRequest, type IIdentityVerifiableCredentialVerifyRequest, type IIdentityVerifiableCredentialVerifyResponse, type IIdentityVerifiablePresentationCreateRequest, type IIdentityVerifiablePresentationCreateResponse, type IIdentityVerifiablePresentationVerifyRequest, type IIdentityVerifiablePresentationVerifyResponse, type IIdentityVerificationMethodCreateRequest, type IIdentityVerificationMethodCreateResponse, type IIdentityVerificationMethodRemoveRequest } from "@twin.org/identity-models";
|
|
2
|
+
import { type IIdentityCreateRequest, type IIdentityCreateResponse, type IIdentityProofCreateRequest, type IIdentityProofCreateResponse, type IIdentityProofVerifyRequest, type IIdentityProofVerifyResponse, type IIdentityRemoveRequest, type IIdentityServiceCreateRequest, type IIdentityServiceCreateResponse, type IIdentityServiceRemoveRequest, type IIdentityVerifiableCredentialCreateRequest, type IIdentityVerifiableCredentialCreateResponse, type IIdentityVerifiableCredentialRevokeRequest, type IIdentityVerifiableCredentialUnrevokeRequest, type IIdentityVerifiableCredentialVerifyRequest, type IIdentityVerifiableCredentialVerifyDocumentRequest, type IIdentityVerifiableCredentialVerifyResponse, type IIdentityVerifiablePresentationCreateRequest, type IIdentityVerifiablePresentationCreateResponse, type IIdentityVerifiablePresentationVerifyRequest, type IIdentityVerifiablePresentationVerifyResponse, type IIdentityVerificationMethodCreateRequest, type IIdentityVerificationMethodCreateResponse, type IIdentityVerificationMethodRemoveRequest } from "@twin.org/identity-models";
|
|
3
3
|
/**
|
|
4
4
|
* The tag to associate with the routes.
|
|
5
5
|
*/
|
|
@@ -75,6 +75,14 @@ export declare function identityVerifiableCredentialCreate(httpRequestContext: I
|
|
|
75
75
|
* @returns The response object with additional http response properties.
|
|
76
76
|
*/
|
|
77
77
|
export declare function identityVerifiableCredentialVerify(httpRequestContext: IHttpRequestContext, componentName: string, request: IIdentityVerifiableCredentialVerifyRequest): Promise<IIdentityVerifiableCredentialVerifyResponse>;
|
|
78
|
+
/**
|
|
79
|
+
* Verify a verifiable credential document.
|
|
80
|
+
* @param httpRequestContext The request context for the API.
|
|
81
|
+
* @param componentName The name of the component to use in the routes stored in the ComponentFactory.
|
|
82
|
+
* @param request The request.
|
|
83
|
+
* @returns The response object with additional http response properties.
|
|
84
|
+
*/
|
|
85
|
+
export declare function identityVerifiableCredentialVerifyDocument(httpRequestContext: IHttpRequestContext, componentName: string, request: IIdentityVerifiableCredentialVerifyDocumentRequest): Promise<IIdentityVerifiableCredentialVerifyResponse>;
|
|
78
86
|
/**
|
|
79
87
|
* Revoke a verifiable credential.
|
|
80
88
|
* @param httpRequestContext The request context for the API.
|
package/docs/changelog.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @twin.org/identity-service - Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.3-next.16](https://github.com/twinfoundation/identity/compare/identity-service-v0.0.3-next.15...identity-service-v0.0.3-next.16) (2026-02-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* separate vc verification routes with query and body ([ea7d891](https://github.com/twinfoundation/identity/commit/ea7d8910472150cf76dbd51e282625e70226d9b3))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Dependencies
|
|
12
|
+
|
|
13
|
+
* The following workspace dependencies were updated
|
|
14
|
+
* dependencies
|
|
15
|
+
* @twin.org/identity-models bumped from 0.0.3-next.15 to 0.0.3-next.16
|
|
16
|
+
* devDependencies
|
|
17
|
+
* @twin.org/identity-connector-entity-storage bumped from 0.0.3-next.15 to 0.0.3-next.16
|
|
18
|
+
|
|
3
19
|
## [0.0.3-next.15](https://github.com/twinfoundation/identity/compare/identity-service-v0.0.3-next.14...identity-service-v0.0.3-next.15) (2026-02-12)
|
|
4
20
|
|
|
5
21
|
|
package/docs/open-api/spec.json
CHANGED
|
@@ -926,6 +926,132 @@
|
|
|
926
926
|
}
|
|
927
927
|
}
|
|
928
928
|
},
|
|
929
|
+
"/identity/verifiable-credential/verify/document": {
|
|
930
|
+
"post": {
|
|
931
|
+
"operationId": "identityVerifiableCredentialVerifyDocument",
|
|
932
|
+
"summary": "Verify an identity verifiable credential document",
|
|
933
|
+
"tags": [
|
|
934
|
+
"Identity"
|
|
935
|
+
],
|
|
936
|
+
"requestBody": {
|
|
937
|
+
"description": "Request to verify a verifiable credential.",
|
|
938
|
+
"required": true,
|
|
939
|
+
"content": {
|
|
940
|
+
"application/json": {
|
|
941
|
+
"schema": {
|
|
942
|
+
"$ref": "https://schema.twindev.org/w3c-did/DidVerifiableCredential"
|
|
943
|
+
},
|
|
944
|
+
"examples": {
|
|
945
|
+
"identityVerifiableCredentialVerifyDocumentRequestExample": {
|
|
946
|
+
"value": {
|
|
947
|
+
"@context": [
|
|
948
|
+
"https://www.w3.org/2018/credentials/v1",
|
|
949
|
+
"https://schema.org"
|
|
950
|
+
],
|
|
951
|
+
"id": "https://example.com/credentials/3732",
|
|
952
|
+
"type": [
|
|
953
|
+
"VerifiableCredential",
|
|
954
|
+
"Person"
|
|
955
|
+
],
|
|
956
|
+
"credentialSubject": {
|
|
957
|
+
"id": "did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def",
|
|
958
|
+
"name": "Jane Doe"
|
|
959
|
+
},
|
|
960
|
+
"issuer": "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a",
|
|
961
|
+
"issuanceDate": "2025-01-24T09:21:51.500Z",
|
|
962
|
+
"credentialStatus": {
|
|
963
|
+
"id": "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation",
|
|
964
|
+
"type": "BitstringStatusList",
|
|
965
|
+
"revocationBitmapIndex": "5"
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
},
|
|
973
|
+
"responses": {
|
|
974
|
+
"200": {
|
|
975
|
+
"description": "Response to verifying a verifiable credential.",
|
|
976
|
+
"content": {
|
|
977
|
+
"application/json": {
|
|
978
|
+
"schema": {
|
|
979
|
+
"$ref": "#/components/schemas/IdentityVerifiableCredentialVerifyResponse"
|
|
980
|
+
},
|
|
981
|
+
"examples": {
|
|
982
|
+
"identityVerifiableCredentialVerifyResponseExample": {
|
|
983
|
+
"value": {
|
|
984
|
+
"revoked": false,
|
|
985
|
+
"verifiableCredential": {
|
|
986
|
+
"@context": [
|
|
987
|
+
"https://www.w3.org/2018/credentials/v1",
|
|
988
|
+
"https://schema.org"
|
|
989
|
+
],
|
|
990
|
+
"id": "https://example.com/credentials/3732",
|
|
991
|
+
"type": [
|
|
992
|
+
"VerifiableCredential",
|
|
993
|
+
"Person"
|
|
994
|
+
],
|
|
995
|
+
"credentialSubject": {
|
|
996
|
+
"id": "did:entity-storage:0x4757993355b921a8229bd780f30921b6a0216a72e6c3f37a09d13b8426a17def",
|
|
997
|
+
"name": "Jane Doe"
|
|
998
|
+
},
|
|
999
|
+
"issuer": "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a",
|
|
1000
|
+
"issuanceDate": "2025-01-24T09:21:51.500Z",
|
|
1001
|
+
"credentialStatus": {
|
|
1002
|
+
"id": "did:entity-storage:0x879c31386f992cfa29b77fe31e37256d69f6a57653cee4eb60ad4c4613c5515a#revocation",
|
|
1003
|
+
"type": "BitstringStatusList",
|
|
1004
|
+
"revocationBitmapIndex": "5"
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
},
|
|
1013
|
+
"400": {
|
|
1014
|
+
"description": "The server cannot process the request, see the content for more details.",
|
|
1015
|
+
"content": {
|
|
1016
|
+
"application/json": {
|
|
1017
|
+
"schema": {
|
|
1018
|
+
"$ref": "#/components/schemas/Error"
|
|
1019
|
+
},
|
|
1020
|
+
"examples": {
|
|
1021
|
+
"exampleResponse": {
|
|
1022
|
+
"value": {
|
|
1023
|
+
"name": "GeneralError",
|
|
1024
|
+
"message": "errorMessage",
|
|
1025
|
+
"properties": {
|
|
1026
|
+
"foo": "bar"
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
},
|
|
1034
|
+
"500": {
|
|
1035
|
+
"description": "The server has encountered a situation it does not know how to handle, see the content for more details.",
|
|
1036
|
+
"content": {
|
|
1037
|
+
"application/json": {
|
|
1038
|
+
"schema": {
|
|
1039
|
+
"$ref": "#/components/schemas/Error"
|
|
1040
|
+
},
|
|
1041
|
+
"examples": {
|
|
1042
|
+
"exampleResponse": {
|
|
1043
|
+
"value": {
|
|
1044
|
+
"name": "InternalServerError",
|
|
1045
|
+
"message": "errorMessage"
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
},
|
|
929
1055
|
"/identity/verifiable-credential/verify": {
|
|
930
1056
|
"get": {
|
|
931
1057
|
"operationId": "identityVerifiableCredentialVerify",
|
|
@@ -945,17 +1071,6 @@
|
|
|
945
1071
|
"example": "eyJraWQiOi...D1Z3AQ"
|
|
946
1072
|
}
|
|
947
1073
|
],
|
|
948
|
-
"requestBody": {
|
|
949
|
-
"description": "Request to verify a verifiable credential.",
|
|
950
|
-
"required": true,
|
|
951
|
-
"content": {
|
|
952
|
-
"application/json": {
|
|
953
|
-
"schema": {
|
|
954
|
-
"$ref": "#/components/schemas/IdentityVerifiableCredentialVerifyRequest"
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
}
|
|
958
|
-
},
|
|
959
1074
|
"responses": {
|
|
960
1075
|
"200": {
|
|
961
1076
|
"description": "Response to verifying a verifiable credential.",
|
|
@@ -2804,19 +2919,6 @@
|
|
|
2804
2919
|
"additionalProperties": false,
|
|
2805
2920
|
"description": "The response payload."
|
|
2806
2921
|
},
|
|
2807
|
-
"IdentityVerifiableCredentialVerifyRequest": {
|
|
2808
|
-
"type": "object",
|
|
2809
|
-
"properties": {
|
|
2810
|
-
"credential": {
|
|
2811
|
-
"$ref": "https://schema.twindev.org/w3c-did/DidVerifiableCredential"
|
|
2812
|
-
}
|
|
2813
|
-
},
|
|
2814
|
-
"required": [
|
|
2815
|
-
"credential"
|
|
2816
|
-
],
|
|
2817
|
-
"additionalProperties": false,
|
|
2818
|
-
"description": "The body parameters."
|
|
2819
|
-
},
|
|
2820
2922
|
"IdentityVerifiableCredentialVerifyResponse": {
|
|
2821
2923
|
"type": "object",
|
|
2822
2924
|
"properties": {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Function: identityVerifiableCredentialVerifyDocument()
|
|
2
|
+
|
|
3
|
+
> **identityVerifiableCredentialVerifyDocument**(`httpRequestContext`, `componentName`, `request`): `Promise`\<`IIdentityVerifiableCredentialVerifyResponse`\>
|
|
4
|
+
|
|
5
|
+
Verify a verifiable credential document.
|
|
6
|
+
|
|
7
|
+
## Parameters
|
|
8
|
+
|
|
9
|
+
### httpRequestContext
|
|
10
|
+
|
|
11
|
+
`IHttpRequestContext`
|
|
12
|
+
|
|
13
|
+
The request context for the API.
|
|
14
|
+
|
|
15
|
+
### componentName
|
|
16
|
+
|
|
17
|
+
`string`
|
|
18
|
+
|
|
19
|
+
The name of the component to use in the routes stored in the ComponentFactory.
|
|
20
|
+
|
|
21
|
+
### request
|
|
22
|
+
|
|
23
|
+
`IIdentityVerifiableCredentialVerifyDocumentRequest`
|
|
24
|
+
|
|
25
|
+
The request.
|
|
26
|
+
|
|
27
|
+
## Returns
|
|
28
|
+
|
|
29
|
+
`Promise`\<`IIdentityVerifiableCredentialVerifyResponse`\>
|
|
30
|
+
|
|
31
|
+
The response object with additional http response properties.
|
package/docs/reference/index.md
CHANGED
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
- [identityServiceRemove](functions/identityServiceRemove.md)
|
|
42
42
|
- [identityVerifiableCredentialCreate](functions/identityVerifiableCredentialCreate.md)
|
|
43
43
|
- [identityVerifiableCredentialVerify](functions/identityVerifiableCredentialVerify.md)
|
|
44
|
+
- [identityVerifiableCredentialVerifyDocument](functions/identityVerifiableCredentialVerifyDocument.md)
|
|
44
45
|
- [identityVerifiableCredentialRevoke](functions/identityVerifiableCredentialRevoke.md)
|
|
45
46
|
- [identityVerifiableCredentialUnrevoke](functions/identityVerifiableCredentialUnrevoke.md)
|
|
46
47
|
- [identityVerifiablePresentationCreate](functions/identityVerifiablePresentationCreate.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twin.org/identity-service",
|
|
3
|
-
"version": "0.0.3-next.
|
|
3
|
+
"version": "0.0.3-next.16",
|
|
4
4
|
"description": "Identity contract implementation and REST endpoint definitions",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"@twin.org/data-json-ld": "next",
|
|
23
23
|
"@twin.org/entity": "next",
|
|
24
24
|
"@twin.org/entity-storage-models": "next",
|
|
25
|
-
"@twin.org/identity-models": "0.0.3-next.
|
|
25
|
+
"@twin.org/identity-models": "0.0.3-next.16",
|
|
26
26
|
"@twin.org/standards-w3c-did": "next",
|
|
27
27
|
"@twin.org/vault-models": "next",
|
|
28
28
|
"@twin.org/web": "next"
|