@twin.org/identity-service 0.0.3-next.2 → 0.0.3-next.21
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/README.md +2 -2
- package/dist/es/identityProfileService.js.map +1 -1
- package/dist/es/identityRoutes.js +277 -8
- package/dist/es/identityRoutes.js.map +1 -1
- package/dist/es/identityService.js +91 -23
- package/dist/es/identityService.js.map +1 -1
- package/dist/types/identityRoutes.d.ts +33 -1
- package/dist/types/identityService.d.ts +31 -6
- package/docs/changelog.md +420 -77
- package/docs/examples.md +196 -1
- package/docs/open-api/spec.json +497 -364
- package/docs/reference/classes/IdentityProfileService.md +8 -8
- package/docs/reference/classes/IdentityResolverService.md +3 -3
- package/docs/reference/classes/IdentityService.md +136 -38
- package/docs/reference/functions/identityAlsoKnownAsCreate.md +31 -0
- package/docs/reference/functions/identityAlsoKnownAsRemove.md +31 -0
- package/docs/reference/functions/identityVerifiableCredentialVerifyDocument.md +31 -0
- package/docs/reference/functions/identityVerifiablePresentationVerifyDocument.md +31 -0
- package/docs/reference/index.md +4 -0
- package/docs/reference/interfaces/IIdentityProfileServiceConstructorOptions.md +2 -2
- package/docs/reference/interfaces/IIdentityResolverServiceConfig.md +2 -2
- package/docs/reference/interfaces/IIdentityResolverServiceConstructorOptions.md +4 -4
- package/docs/reference/interfaces/IIdentityServiceConfig.md +2 -2
- package/docs/reference/interfaces/IIdentityServiceConstructorOptions.md +2 -2
- package/locales/en.json +2 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identityRoutes.js","sourceRoot":"","sources":["../../src/identityRoutes.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACN,cAAc,EAyBd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;GAEG;AACH,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAW;IACnC;QACC,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8DAA8D;KAC3E;CACD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACzC,aAAqB,EACrB,aAAqB;IAErB,MAAM,mBAAmB,GAAgE;QACxF,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,oBAAoB;QAC7B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,GAAG;QACzB,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,cAAc,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC3D,WAAW,EAAE;YACZ,IAAI,0BAAkC;YACtC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,8BAA8B;oBAClC,OAAO,EAAE,EAAE;iBACX;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,2BAAmC;gBACvC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,+BAA+B;wBACnC,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,UAAU,EAAE,WAAW,CAAC,OAAO;gCAC/B,EAAE,EAAE,iFAAiF;gCACrF,OAAO,EAAE;oCACR;wCACC,EAAE,EAAE,4FAA4F;wCAChG,IAAI,EAAE,sBAAsB;wCAC5B,eAAe,EAAE,oDAAoD;qCACrE;iCACD;6BACD;yBACD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,mBAAmB,GAA2D;QACnF,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,oBAAoB;QAC7B,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,GAAG,aAAa,YAAY;QAClC,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,cAAc,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC3D,WAAW,EAAE;YACZ,IAAI,0BAAkC;YACtC,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,8BAA8B;oBAClC,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,iFAAiF;yBAClF;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,sBAA8B;aAClC;SACD;KACD,CAAC;IAEF,MAAM,qCAAqC,GAGvC;QACH,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,wCAAwC;QACjD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,gCAAgC;QACtD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,gCAAgC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC7E,WAAW,EAAE;YACZ,IAAI,4CAAoD;YACxD,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,gDAAgD;oBACpD,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,iFAAiF;yBAClF;wBACD,IAAI,EAAE;4BACL,sBAAsB,EAAE,iBAAiB;4BACzC,oBAAoB,EAAE,cAAc;yBACpC;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,6CAAqD;gBACzD,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,iDAAiD;wBACrD,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,EAAE,EAAE,8FAA8F;gCAClG,UAAU,EACT,iFAAiF;gCAClF,IAAI,EAAE,gBAAgB;gCACtB,YAAY,EAAE;oCACb,GAAG,EAAE,KAAK;oCACV,GAAG,EAAE,OAAO;oCACZ,GAAG,EAAE,6CAA6C;oCAClD,GAAG,EAAE,SAAS;oCACd,CAAC,EAAE,6CAA6C;iCAChD;6BACD;yBACD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,qCAAqC,GAGvC;QACH,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,wCAAwC;QACjD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,GAAG,aAAa,sDAAsD;QAC5E,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,gCAAgC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC7E,WAAW,EAAE;YACZ,IAAI,4CAAoD;YACxD,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,gDAAgD;oBACpD,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,iFAAiF;4BAClF,oBAAoB,EAAE,cAAc;yBACpC;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,sBAA8B;gBAClC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,iDAAiD;wBACrD,QAAQ,EAAE;4BACT,UAAU,EAAE,cAAc,CAAC,SAAS;yBACpC;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,0BAA0B,GAG5B;QACH,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,4BAA4B;QACrC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,oBAAoB;QAC1C,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACZ,IAAI,iCAAyC;YAC7C,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,qCAAqC;oBACzC,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,iFAAiF;yBAClF;wBACD,IAAI,EAAE;4BACL,SAAS,EAAE,+BAA+B;4BAC1C,IAAI,EAAE,eAAe;4BACrB,QAAQ,EAAE,yBAAyB;yBACnC;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,kCAA0C;gBAC9C,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,sCAAsC;wBAC1C,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,EAAE,EAAE,+BAA+B;gCACnC,IAAI,EAAE,eAAe;gCACrB,eAAe,EAAE,yBAAyB;6BAC1C;yBACD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,0BAA0B,GAC/B;QACC,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,4BAA4B;QACrC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,GAAG,aAAa,+BAA+B;QACrD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,qBAAqB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAClE,WAAW,EAAE;YACZ,IAAI,iCAAyC;YAC7C,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,qCAAqC;oBACzC,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,iFAAiF;4BAClF,SAAS,EAAE,+BAA+B;yBAC1C;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,sBAA8B;gBAClC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,sCAAsC;wBAC1C,QAAQ,EAAE;4BACT,UAAU,EAAE,cAAc,CAAC,SAAS;yBACpC;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEH,MAAM,uCAAuC,GAGzC;QACH,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,0CAA0C;QACnD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,wDAAwD;QAC9E,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,kCAAkC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC/E,WAAW,EAAE;YACZ,IAAI,8CAAsD;YAC1D,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,kDAAkD;oBACtD,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,uFAAuF;4BACxF,oBAAoB,EAAE,cAAc;yBACpC;wBACD,IAAI,EAAE;4BACL,YAAY,EAAE,sCAAsC;4BACpD,OAAO,EAAE;gCACR,UAAU,EAAE,oBAAoB;gCAChC,OAAO,EAAE,QAAQ;gCACjB,EAAE,EAAE,uFAAuF;gCAC3F,IAAI,EAAE,UAAU;6BAChB;4BACD,eAAe,EAAE,CAAC;yBAClB;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,+CAAuD;gBAC3D,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,mDAAmD;wBACvD,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,oBAAoB,EAAE;oCACrB,UAAU,EAAE,CAAC,wCAAwC,EAAE,oBAAoB,CAAC;oCAC5E,EAAE,EAAE,sCAAsC;oCAC1C,IAAI,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC;oCACxC,iBAAiB,EAAE;wCAClB,EAAE,EAAE,uFAAuF;wCAC3F,IAAI,EAAE,UAAU;qCAChB;oCACD,MAAM,EACL,uFAAuF;oCACxF,YAAY,EAAE,0BAA0B;oCACxC,gBAAgB,EAAE;wCACjB,EAAE,EAAE,kGAAkG;wCACtG,IAAI,EAAE,qBAAqB;wCAC3B,qBAAqB,EAAE,GAAG;qCAC1B;iCACD;gCACD,GAAG,EAAE,qBAAqB;6BAC1B;yBACD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,uCAAuC,GAGzC;QACH,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,0CAA0C;QACnD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,aAAa,+BAA+B;QACrD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,kCAAkC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC/E,WAAW,EAAE;YACZ,IAAI,8CAAsD;YAC1D,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,kDAAkD;oBACtD,OAAO,EAAE;wBACR,KAAK,EAAE;4BACN,GAAG,EAAE,qBAAqB;yBAC1B;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,+CAAuD;gBAC3D,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,mDAAmD;wBACvD,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,OAAO,EAAE,KAAK;gCACd,oBAAoB,EAAE;oCACrB,UAAU,EAAE,CAAC,wCAAwC,EAAE,oBAAoB,CAAC;oCAC5E,EAAE,EAAE,sCAAsC;oCAC1C,IAAI,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC;oCACxC,iBAAiB,EAAE;wCAClB,EAAE,EAAE,uFAAuF;wCAC3F,IAAI,EAAE,UAAU;qCAChB;oCACD,MAAM,EACL,uFAAuF;oCACxF,YAAY,EAAE,0BAA0B;oCACxC,gBAAgB,EAAE;wCACjB,EAAE,EAAE,kGAAkG;wCACtG,IAAI,EAAE,qBAAqB;wCAC3B,qBAAqB,EAAE,GAAG;qCAC1B;iCACD;6BACD;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,MAAM,uCAAuC,GAGzC;QACH,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,0CAA0C;QACnD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,aAAa,0DAA0D;QAChF,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,kCAAkC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAC/E,WAAW,EAAE;YACZ,IAAI,8CAAsD;YAC1D,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,kDAAkD;oBACtD,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,uFAAuF;4BACxF,eAAe,EAAE,CAAC;yBAClB;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,sBAA8B;gBAClC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,sCAAsC;wBAC1C,QAAQ,EAAE;4BACT,UAAU,EAAE,cAAc,CAAC,SAAS;yBACpC;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,yCAAyC,GAG3C;QACH,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,4CAA4C;QACrD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,aAAa,4DAA4D;QAClF,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,oCAAoC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QACjF,WAAW,EAAE;YACZ,IAAI,gDAAwD;YAC5D,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,oDAAoD;oBACxD,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,uFAAuF;4BACxF,eAAe,EAAE,CAAC;yBAClB;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,sBAA8B;gBAClC,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,wCAAwC;wBAC5C,QAAQ,EAAE;4BACT,UAAU,EAAE,cAAc,CAAC,SAAS;yBACpC;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,yCAAyC,GAG3C;QACH,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,4CAA4C;QACrD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,0DAA0D;QAChF,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,oCAAoC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QACjF,WAAW,EAAE;YACZ,IAAI,gDAAwD;YAC5D,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,oDAAoD;oBACxD,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,uFAAuF;4BACxF,oBAAoB,EAAE,cAAc;yBACpC;wBACD,IAAI,EAAE;4BACL,cAAc,EAAE,uCAAuC;4BACvD,qBAAqB,EAAE,CAAC,qBAAqB,CAAC;yBAC9C;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,iDAAyD;gBAC7D,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,sDAAsD;wBAC1D,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,sBAAsB,EAAE;oCACvB,UAAU,EAAE,CAAC,wCAAwC,EAAE,oBAAoB,CAAC;oCAC5E,EAAE,EAAE,gBAAgB;oCACpB,IAAI,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC;oCAC1C,oBAAoB,EAAE,CAAC,qBAAqB,CAAC;oCAC7C,MAAM,EACL,uFAAuF;iCACxF;gCACD,GAAG,EAAE,qBAAqB;6BAC1B;yBACD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,yCAAyC,GAG3C;QACH,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,4CAA4C;QACrD,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,GAAG,aAAa,iCAAiC;QACvD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,oCAAoC,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QACjF,WAAW,EAAE;YACZ,IAAI,gDAAwD;YAC5D,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,oDAAoD;oBACxD,OAAO,EAAE;wBACR,KAAK,EAAE;4BACN,GAAG,EAAE,qBAAqB;yBAC1B;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,iDAAyD;gBAC7D,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,qDAAqD;wBACzD,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,OAAO,EAAE,KAAK;gCACd,sBAAsB,EAAE;oCACvB,UAAU,EAAE,CAAC,wCAAwC,EAAE,oBAAoB,CAAC;oCAC5E,EAAE,EAAE,gBAAgB;oCACpB,IAAI,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC;oCAC1C,oBAAoB,EAAE,CAAC,qBAAqB,CAAC;oCAC7C,MAAM,EACL,uFAAuF;iCACxF;6BACD;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,MAAM,wBAAwB,GAG1B;QACH,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,0BAA0B;QACnC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,wCAAwC;QAC9D,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAChE,WAAW,EAAE;YACZ,IAAI,+BAAuC;YAC3C,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,mCAAmC;oBACvC,OAAO,EAAE;wBACR,UAAU,EAAE;4BACX,QAAQ,EACP,uFAAuF;4BACxF,oBAAoB,EAAE,oBAAoB;yBAC1C;wBACD,IAAI,EAAE;4BACL,SAAS,EAAE,oBAAoB;4BAC/B,QAAQ,EAAE;gCACT,UAAU,EAAE;oCACX,wCAAwC;oCACxC,iDAAiD;iCACjD;gCACD,EAAE,EAAE,+CAA+C;gCACnD,IAAI,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;gCAClD,IAAI,EAAE,mBAAmB;gCACzB,WAAW,EAAE,mDAAmD;gCAChE,MAAM,EAAE,iCAAiC;gCACzC,SAAS,EAAE,sBAAsB;gCACjC,iBAAiB,EAAE;oCAClB,EAAE,EAAE,sBAAsB;oCAC1B,QAAQ,EAAE,wBAAwB;iCAClC;6BACD;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,gCAAwC;gBAC5C,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,oCAAoC;wBACxC,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,UAAU,EAAE;oCACX,sCAAsC;oCACtC,+CAA+C;iCAC/C;gCACD,IAAI,EAAE,oBAAoB;gCAC1B,WAAW,EAAE,gBAAgB;gCAC7B,OAAO,EAAE,0BAA0B;gCACnC,kBAAkB,EACjB,0GAA0G;gCAC3G,YAAY,EAAE,iBAAiB;gCAC/B,UAAU,EACT,2FAA2F;6BAC5F;yBACD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IAEF,MAAM,wBAAwB,GAG1B;QACH,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,0BAA0B;QACnC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,GAAG,aAAa,eAAe;QACrC,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAC9C,mBAAmB,CAAC,kBAAkB,EAAE,aAAa,EAAE,OAAO,CAAC;QAChE,WAAW,EAAE;YACZ,IAAI,+BAAuC;YAC3C,QAAQ,EAAE;gBACT;oBACC,EAAE,EAAE,mCAAmC;oBACvC,OAAO,EAAE;wBACR,IAAI,EAAE;4BACL,QAAQ,EAAE;gCACT,UAAU,EAAE;oCACX,wCAAwC;oCACxC,iDAAiD;iCACjD;gCACD,EAAE,EAAE,+CAA+C;gCACnD,IAAI,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;gCAClD,IAAI,EAAE,mBAAmB;gCACzB,WAAW,EAAE,mDAAmD;gCAChE,MAAM,EAAE,iCAAiC;gCACzC,SAAS,EAAE,sBAAsB;gCACjC,iBAAiB,EAAE;oCAClB,EAAE,EAAE,sBAAsB;oCAC1B,QAAQ,EAAE,wBAAwB;iCAClC;6BACD;4BACD,KAAK,EAAE;gCACN,UAAU,EAAE,sCAAsC;gCAClD,IAAI,EAAE,oBAAoB;gCAC1B,WAAW,EAAE,gBAAgB;gCAC7B,OAAO,EAAE,0BAA0B;gCACnC,kBAAkB,EACjB,0GAA0G;gCAC3G,YAAY,EAAE,iBAAiB;gCAC/B,UAAU,EACT,0FAA0F;6BAC3F;yBACD;qBACD;iBACD;aACD;SACD;QACD,YAAY,EAAE;YACb;gBACC,IAAI,gCAAwC;gBAC5C,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,oCAAoC;wBACxC,QAAQ,EAAE;4BACT,IAAI,EAAE;gCACL,QAAQ,EAAE,IAAI;6BACd;yBACD;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE,IAAI;KACd,CAAC;IAEF,OAAO;QACN,mBAAmB;QACnB,mBAAmB;QACnB,qCAAqC;QACrC,qCAAqC;QACrC,0BAA0B;QAC1B,0BAA0B;QAC1B,uCAAuC;QACvC,uCAAuC;QACvC,uCAAuC;QACvC,yCAAyC;QACzC,yCAAyC;QACzC,yCAAyC;QACzC,wBAAwB;QACxB,wBAAwB;KACxB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,kBAAuC,EACvC,aAAqB,EACrB,OAA+B;IAE/B,MAAM,CAAC,MAAM,CAAyB,aAAa,aAAmB,OAAO,CAAC,CAAC;IAE/E,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAC5C,OAAO,CAAC,IAAI,EAAE,SAAS,EACvB,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,kBAAuC,EACvC,aAAqB,EACrB,OAA+B;IAE/B,MAAM,CAAC,MAAM,CAAyB,aAAa,aAAmB,OAAO,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,SAAS,CAAC,cAAc,CAC7B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,cAAc,CAAC,SAAS;KACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACrD,kBAAuC,EACvC,aAAqB,EACrB,OAAiD;IAEjD,MAAM,CAAC,MAAM,CAA2C,aAAa,aAAmB,OAAO,CAAC,CAAC;IACjG,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,wBAAwB,CACtD,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,OAAO,CAAC,IAAI,CAAC,sBAAsB,EACnC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EACjC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACrD,kBAAuC,EACvC,aAAqB,EACrB,OAAiD;IAEjD,MAAM,CAAC,MAAM,CAA2C,aAAa,aAAmB,OAAO,CAAC,CAAC;IACjG,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,6CAEb,OAAO,CAAC,UAAU,CAAC,oBAAoB,CACvC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,SAAS,CAAC,wBAAwB,CACvC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAC3F,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,cAAc,CAAC,SAAS;KACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,kBAAuC,EACvC,aAAqB,EACrB,OAAsC;IAEtC,MAAM,CAAC,MAAM,CAAgC,aAAa,aAAmB,OAAO,CAAC,CAAC;IACtF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAC3C,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,OAAO,CAAC,IAAI,CAAC,SAAS,EACtB,OAAO,CAAC,IAAI,CAAC,IAAI,EACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,EACrB,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,kBAAuC,EACvC,aAAqB,EACrB,OAAsC;IAEtC,MAAM,CAAC,MAAM,CAAgC,aAAa,aAAmB,OAAO,CAAC,CAAC;IACtF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,kCAEb,OAAO,CAAC,UAAU,CAAC,SAAS,CAC5B,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,SAAS,CAAC,aAAa,CAC5B,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAChF,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,cAAc,CAAC,SAAS;KACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACvD,kBAAuC,EACvC,aAAqB,EACrB,OAAmD;IAEnD,MAAM,CAAC,MAAM,CACZ,aAAa,aAEb,OAAO,CACP,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,6CAEb,OAAO,CAAC,UAAU,CAAC,oBAAoB,CACvC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,0BAA0B,CACxD,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAC3F,OAAO,CAAC,IAAI,CAAC,YAAY,EACzB,OAAO,CAAC,IAAI,CAAC,OAAO,EACpB;QACC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;QAC7C,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;KACxD,EACD,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACvD,kBAAuC,EACvC,aAAqB,EACrB,OAAmD;IAEnD,MAAM,CAAC,MAAM,CACZ,aAAa,aAEb,OAAO,CACP,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,mBAEb,OAAO,CAAC,KAAK,CACb,CAAC;IACF,MAAM,CAAC,WAAW,CAAC,aAAa,uBAA6B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7E,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACvD,kBAAuC,EACvC,aAAqB,EACrB,OAAmD;IAEnD,MAAM,CAAC,MAAM,CACZ,aAAa,aAEb,OAAO,CACP,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC1E,MAAM,CAAC,OAAO,CAAC,aAAa,wCAA8C,eAAe,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,SAAS,CAAC,0BAA0B,CACzC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,eAAe,EACf,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,cAAc,CAAC,SAAS;KACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,kBAAuC,EACvC,aAAqB,EACrB,OAAqD;IAErD,MAAM,CAAC,MAAM,CACZ,aAAa,aAEb,OAAO,CACP,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC1E,MAAM,CAAC,OAAO,CAAC,aAAa,wCAA8C,eAAe,CAAC,CAAC;IAE3F,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,SAAS,CAAC,4BAA4B,CAC3C,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,eAAe,EACf,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,UAAU,EAAE,cAAc,CAAC,SAAS;KACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,kBAAuC,EACvC,aAAqB,EACrB,OAAqD;IAErD,MAAM,CAAC,MAAM,CACZ,aAAa,aAEb,OAAO,CACP,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,6CAEb,OAAO,CAAC,UAAU,CAAC,oBAAoB,CACvC,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,4BAA4B,CAC1D,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAC3F,OAAO,CAAC,IAAI,CAAC,cAAc,EAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,EACrB,OAAO,CAAC,IAAI,CAAC,KAAK,EAClB,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAClC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAC7B,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,kBAAuC,EACvC,aAAqB,EACrB,OAAqD;IAErD,MAAM,CAAC,MAAM,CACZ,aAAa,aAEb,OAAO,CACP,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,mBAEb,OAAO,CAAC,KAAK,CACb,CAAC;IACF,MAAM,CAAC,WAAW,CAAC,aAAa,uBAA6B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/E,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,kBAAuC,EACvC,aAAqB,EACrB,OAAoC;IAEpC,MAAM,CAAC,MAAM,CAA8B,aAAa,aAAmB,OAAO,CAAC,CAAC;IACpF,MAAM,CAAC,MAAM,CACZ,aAAa,wBAEb,OAAO,CAAC,UAAU,CAClB,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,iCAEb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAC3B,CAAC;IACF,MAAM,CAAC,WAAW,CACjB,aAAa,6CAEb,OAAO,CAAC,UAAU,CAAC,oBAAoB,CACvC,CAAC;IACF,MAAM,CAAC,MAAM,CACZ,aAAa,kBAEb,OAAO,CAAC,IAAI,CACZ,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACxD,eAAe,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CACzC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAC3B,OAAO,CAAC,IAAI,CAAC,SAAS,EACtB,OAAO,CAAC,IAAI,CAAC,QAAQ,EACrB,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,CACtC,CAAC;IAEF,OAAO;QACN,IAAI,EAAE,MAAM;KACZ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,kBAAuC,EACvC,aAAqB,EACrB,OAAoC;IAEpC,MAAM,CAAC,MAAM,CAA8B,aAAa,aAAmB,OAAO,CAAC,CAAC;IACpF,MAAM,CAAC,MAAM,CACZ,aAAa,kBAEb,OAAO,CAAC,IAAI,CACZ,CAAC;IAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtF,OAAO;QACN,IAAI,EAAE;YACL,QAAQ,EAAE,MAAM;SAChB;KACD,CAAC;AACH,CAAC","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 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 } 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://www.w3.org/ns/credentials/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://www.w3.org/ns/credentials/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.date(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\tGuards.object<IIdentityVerifiableCredentialVerifyRequest[\"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.verifiableCredentialVerify(request.query.jwt);\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\trequest.body.expiresInMinutes,\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 IIdentityAlsoKnownAsCreateRequest,\n\ttype IIdentityAlsoKnownAsRemoveRequest,\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\ttype IIdentityVerifiablePresentationVerifyDocumentRequest\n} from \"@twin.org/identity-models\";\nimport { nameof } from \"@twin.org/nameof\";\nimport {\n\tDidContexts,\n\ttype IDidVerifiablePresentation,\n\ttype IDidVerifiableCredential\n} 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 identityAlsoKnownAsCreateRoute: IRestRoute<\n\t\tIIdentityAlsoKnownAsCreateRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityAlsoKnownAsCreate\",\n\t\tsummary: \"Add an alias to the alsoKnownAs property on the document\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/:identity/alias`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityAlsoKnownAsCreate(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityAlsoKnownAsCreateRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityAlsoKnownAsCreateRequestExample\",\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\talias: \"did:example:123\"\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 identityAlsoKnownAsRemoveRoute: IRestRoute<\n\t\tIIdentityAlsoKnownAsRemoveRequest,\n\t\tINoContentResponse\n\t> = {\n\t\toperationId: \"identityAlsoKnownAsRemove\",\n\t\tsummary: \"Remove an alias from the alsoKnownAs property on the document\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"DELETE\",\n\t\tpath: `${baseRouteName}/:identity/alias/:alias`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityAlsoKnownAsRemove(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityAlsoKnownAsRemoveRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityAlsoKnownAsRemoveRequestExample\",\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\talias: \"did:example:123\"\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: \"identityAlsoKnownAsRemoveResponseExample\",\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 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 identityVerifiablePresentationVerifyDocumentRoute: IRestRoute<\n\t\tIIdentityVerifiablePresentationVerifyDocumentRequest,\n\t\tIIdentityVerifiablePresentationVerifyResponse\n\t> = {\n\t\toperationId: \"identityVerifiablePresentationVerifyDocument\",\n\t\tsummary: \"Verify an identity verifiable presentation document\",\n\t\ttag: tagsIdentity[0].name,\n\t\tmethod: \"POST\",\n\t\tpath: `${baseRouteName}/verifiable-presentation/verify/document`,\n\t\thandler: async (httpRequestContext, request) =>\n\t\t\tidentityVerifiablePresentationVerifyDocument(httpRequestContext, componentName, request),\n\t\trequestType: {\n\t\t\ttype: nameof<IIdentityVerifiablePresentationVerifyDocumentRequest>(),\n\t\t\texamples: [\n\t\t\t\t{\n\t\t\t\t\tid: \"identityVerifiablePresentationVerifyDocumentRequestExample\",\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\tverifiableCredential: [\n\t\t\t\t\t\t\t\t{\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} as IDidVerifiablePresentation\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\tidentityAlsoKnownAsCreateRoute,\n\t\tidentityAlsoKnownAsRemoveRoute,\n\t\tidentityVerifiableCredentialCreateRoute,\n\t\tidentityVerifiableCredentialVerifyDocumentRoute,\n\t\tidentityVerifiableCredentialVerifyRoute,\n\t\tidentityVerifiableCredentialRevokeRoute,\n\t\tidentityVerifiableCredentialUnrevokeRoute,\n\t\tidentityVerifiablePresentationCreateRoute,\n\t\tidentityVerifiablePresentationVerifyDocumentRoute,\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 an identity alias.\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 identityAlsoKnownAsCreate(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityAlsoKnownAsCreateRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityAlsoKnownAsCreateRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityAlsoKnownAsCreateRequest[\"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\tawait component.alsoKnownAsAdd(\n\t\trequest.pathParams.identity,\n\t\trequest.body.alias,\n\t\tcontextIds[ContextIdKeys.Organization]\n\t);\n\n\treturn {\n\t\tstatusCode: HttpStatusCode.noContent\n\t};\n}\n\n/**\n * Remove an identity alias.\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 identityAlsoKnownAsRemove(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityAlsoKnownAsRemoveRequest\n): Promise<INoContentResponse> {\n\tGuards.object<IIdentityAlsoKnownAsRemoveRequest>(ROUTES_SOURCE, nameof(request), request);\n\tGuards.object<IIdentityAlsoKnownAsRemoveRequest[\"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(ROUTES_SOURCE, nameof(request.pathParams.alias), request.pathParams.alias);\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.alsoKnownAsRemove(\n\t\tDocumentHelper.joinId(request.pathParams.identity, request.pathParams.alias),\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 * Verify a verifiable presentation 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 identityVerifiablePresentationVerifyDocument(\n\thttpRequestContext: IHttpRequestContext,\n\tcomponentName: string,\n\trequest: IIdentityVerifiablePresentationVerifyDocumentRequest\n): Promise<IIdentityVerifiablePresentationVerifyResponse> {\n\tGuards.object<IIdentityVerifiablePresentationVerifyDocumentRequest>(\n\t\tROUTES_SOURCE,\n\t\tnameof(request),\n\t\trequest\n\t);\n\tGuards.object<IDidVerifiablePresentation>(ROUTES_SOURCE, nameof(request.body), request.body);\n\n\tconst component = ComponentFactory.get<IIdentityComponent>(componentName);\n\n\tconst result = await component.verifiablePresentationVerify(request.body);\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"]}
|
|
@@ -167,6 +167,52 @@ export class IdentityService {
|
|
|
167
167
|
throw new GeneralError(IdentityService.CLASS_NAME, "serviceRemoveFailed", { serviceId }, error);
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Add an alias to the alsoKnownAs property on the document.
|
|
172
|
+
* If the alias is already present the operation is a no-op.
|
|
173
|
+
* @param documentId The id of the document to update.
|
|
174
|
+
* @param alias The alias to add. Must be a Url or Urn (typically another DID).
|
|
175
|
+
* @param controller The controller of the identity who can make changes.
|
|
176
|
+
* @returns Nothing.
|
|
177
|
+
* @throws GeneralError if the alias is not a Url or Urn.
|
|
178
|
+
* @throws NotFoundError if the id can not be resolved.
|
|
179
|
+
*/
|
|
180
|
+
async alsoKnownAsAdd(documentId, alias, controller) {
|
|
181
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "controller", controller);
|
|
182
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "documentId", documentId);
|
|
183
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "alias", alias);
|
|
184
|
+
try {
|
|
185
|
+
const idParts = DocumentHelper.parseId(documentId);
|
|
186
|
+
const identityConnector = this.getConnectorByUri(idParts.id);
|
|
187
|
+
await identityConnector.addAlsoKnownAs(controller, documentId, alias);
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
throw new GeneralError(IdentityService.CLASS_NAME, "alsoKnownAsAddFailed", { identity: documentId, alias }, error);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Remove an alias from the alsoKnownAs property on the document.
|
|
195
|
+
* If the alias is not present the operation is a no-op.
|
|
196
|
+
* @param documentId The id of the document to update.
|
|
197
|
+
* @param alias The alias to remove. Must be a Url or Urn.
|
|
198
|
+
* @param controller The controller of the identity who can make changes.
|
|
199
|
+
* @returns Nothing.
|
|
200
|
+
* @throws GeneralError if the alias is not a Url or Urn.
|
|
201
|
+
* @throws NotFoundError if the id can not be resolved.
|
|
202
|
+
*/
|
|
203
|
+
async alsoKnownAsRemove(documentId, alias, controller) {
|
|
204
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "controller", controller);
|
|
205
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "documentId", documentId);
|
|
206
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "alias", alias);
|
|
207
|
+
try {
|
|
208
|
+
const idParts = DocumentHelper.parseId(documentId);
|
|
209
|
+
const identityConnector = this.getConnectorByUri(idParts.id);
|
|
210
|
+
await identityConnector.removeAlsoKnownAs(controller, documentId, alias);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
throw new GeneralError(IdentityService.CLASS_NAME, "alsoKnownAsRemoveFailed", { identity: documentId, alias }, error);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
170
216
|
/**
|
|
171
217
|
* Create a verifiable credential for a verification method.
|
|
172
218
|
* @param verificationMethodId The verification method id to use.
|
|
@@ -182,7 +228,7 @@ export class IdentityService {
|
|
|
182
228
|
async verifiableCredentialCreate(verificationMethodId, id, subject, options, controller) {
|
|
183
229
|
Guards.stringValue(IdentityService.CLASS_NAME, "controller", controller);
|
|
184
230
|
Urn.guard(IdentityService.CLASS_NAME, "verificationMethodId", verificationMethodId);
|
|
185
|
-
Guards.
|
|
231
|
+
Guards.object(IdentityService.CLASS_NAME, "subject", subject);
|
|
186
232
|
try {
|
|
187
233
|
const idParts = DocumentHelper.parseId(verificationMethodId);
|
|
188
234
|
const identityConnector = this.getConnectorByUri(idParts.id);
|
|
@@ -195,12 +241,25 @@ export class IdentityService {
|
|
|
195
241
|
}
|
|
196
242
|
/**
|
|
197
243
|
* Verify a verifiable credential is valid.
|
|
198
|
-
* @param
|
|
244
|
+
* @param credential The credential to verify.
|
|
199
245
|
* @returns The credential stored in the jwt and the revocation status.
|
|
200
246
|
*/
|
|
201
|
-
async verifiableCredentialVerify(
|
|
202
|
-
|
|
203
|
-
|
|
247
|
+
async verifiableCredentialVerify(credential) {
|
|
248
|
+
if (Is.object(credential)) {
|
|
249
|
+
Guards.objectValue(IdentityService.CLASS_NAME, "credential", credential);
|
|
250
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "credential.issuer", credential.issuer);
|
|
251
|
+
Guards.objectValue(IdentityService.CLASS_NAME, "credential.proof", credential.proof);
|
|
252
|
+
try {
|
|
253
|
+
const identityConnector = this.getConnectorByUri(credential.issuer);
|
|
254
|
+
const service = await identityConnector.checkVerifiableCredential(credential);
|
|
255
|
+
return service;
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
throw new GeneralError(IdentityService.CLASS_NAME, "verifiableCredentialVerifyFailed", undefined, error);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "credential", credential);
|
|
262
|
+
const jwtDecoded = await Jwt.decode(credential);
|
|
204
263
|
const jwtHeader = jwtDecoded.header;
|
|
205
264
|
const jwtPayload = jwtDecoded.payload;
|
|
206
265
|
const jwtSignature = jwtDecoded.signature;
|
|
@@ -212,7 +271,7 @@ export class IdentityService {
|
|
|
212
271
|
}
|
|
213
272
|
try {
|
|
214
273
|
const identityConnector = this.getConnectorByUri(jwtPayload.iss);
|
|
215
|
-
const service = await identityConnector.checkVerifiableCredential(
|
|
274
|
+
const service = await identityConnector.checkVerifiableCredential(credential);
|
|
216
275
|
return service;
|
|
217
276
|
}
|
|
218
277
|
catch (error) {
|
|
@@ -268,18 +327,19 @@ export class IdentityService {
|
|
|
268
327
|
* @param contexts The contexts for the data stored in the verifiable credential.
|
|
269
328
|
* @param types The types for the data stored in the verifiable credential.
|
|
270
329
|
* @param verifiableCredentials The credentials to use for creating the presentation in jwt format.
|
|
271
|
-
* @param
|
|
330
|
+
* @param options Additional options for creating the verifiable presentation.
|
|
331
|
+
* @param options.expirationDate The date the verifiable presentation is valid until.
|
|
272
332
|
* @param controller The controller of the identity who can make changes.
|
|
273
333
|
* @returns The created verifiable presentation and its token.
|
|
274
334
|
* @throws NotFoundError if the id can not be resolved.
|
|
275
335
|
*/
|
|
276
|
-
async verifiablePresentationCreate(verificationMethodId, presentationId, contexts, types, verifiableCredentials,
|
|
336
|
+
async verifiablePresentationCreate(verificationMethodId, presentationId, contexts, types, verifiableCredentials, options, controller) {
|
|
277
337
|
Guards.stringValue(IdentityService.CLASS_NAME, "controller", controller);
|
|
278
338
|
Guards.stringValue(IdentityService.CLASS_NAME, "verificationMethodId", verificationMethodId);
|
|
279
339
|
try {
|
|
280
340
|
const idParts = DocumentHelper.parseId(verificationMethodId);
|
|
281
341
|
const identityConnector = this.getConnectorByUri(idParts.id);
|
|
282
|
-
const result = await identityConnector.createVerifiablePresentation(controller, verificationMethodId, presentationId, contexts, types, verifiableCredentials,
|
|
342
|
+
const result = await identityConnector.createVerifiablePresentation(controller, verificationMethodId, presentationId, contexts, types, verifiableCredentials, options);
|
|
283
343
|
return result;
|
|
284
344
|
}
|
|
285
345
|
catch (error) {
|
|
@@ -288,24 +348,32 @@ export class IdentityService {
|
|
|
288
348
|
}
|
|
289
349
|
/**
|
|
290
350
|
* Verify a verifiable presentation is valid.
|
|
291
|
-
* @param
|
|
351
|
+
* @param presentation The presentation to verify.
|
|
292
352
|
* @returns The presentation stored in the jwt and the revocation status.
|
|
293
353
|
*/
|
|
294
|
-
async verifiablePresentationVerify(
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
Is.undefined(
|
|
303
|
-
|
|
304
|
-
|
|
354
|
+
async verifiablePresentationVerify(presentation) {
|
|
355
|
+
let holder;
|
|
356
|
+
if (Is.stringValue(presentation)) {
|
|
357
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "presentation", presentation);
|
|
358
|
+
const jwtDecoded = await Jwt.decode(presentation);
|
|
359
|
+
const jwtHeader = jwtDecoded.header;
|
|
360
|
+
const jwtPayload = jwtDecoded.payload;
|
|
361
|
+
const jwtSignature = jwtDecoded.signature;
|
|
362
|
+
if (Is.undefined(jwtHeader) ||
|
|
363
|
+
Is.undefined(jwtPayload) ||
|
|
364
|
+
Is.undefined(jwtPayload.iss) ||
|
|
365
|
+
Is.undefined(jwtSignature)) {
|
|
366
|
+
throw new GeneralError(IdentityService.CLASS_NAME, "jwtDecodeFailed");
|
|
367
|
+
}
|
|
368
|
+
holder = jwtPayload.iss;
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
holder = presentation.holder;
|
|
305
372
|
}
|
|
373
|
+
Guards.stringValue(IdentityService.CLASS_NAME, "holder", holder);
|
|
306
374
|
try {
|
|
307
|
-
const identityConnector = this.getConnectorByUri(
|
|
308
|
-
const service = await identityConnector.checkVerifiablePresentation(
|
|
375
|
+
const identityConnector = this.getConnectorByUri(holder);
|
|
376
|
+
const service = await identityConnector.checkVerifiablePresentation(presentation);
|
|
309
377
|
return service;
|
|
310
378
|
}
|
|
311
379
|
catch (error) {
|