diff --git a/aries_cloudagent/anoncreds/routes.py b/aries_cloudagent/anoncreds/routes.py index a0e9bf47fb..317612bb64 100644 --- a/aries_cloudagent/anoncreds/routes.py +++ b/aries_cloudagent/anoncreds/routes.py @@ -139,7 +139,7 @@ class SchemaPostRequestSchema(OpenAPISchema): options = fields.Nested(SchemaPostOptionSchema()) -@docs(tags=["anoncreds"], summary="Create a schema on the connected ledger") +@docs(tags=["anoncreds - schemas"], summary="Create a schema on the connected ledger") @request_schema(SchemaPostRequestSchema()) @response_schema(SchemaResultSchema(), 200, description="") async def schemas_post(request: web.BaseRequest): @@ -205,7 +205,7 @@ async def schemas_post(request: web.BaseRequest): raise web.HTTPBadRequest(reason=e.roll_up) from e -@docs(tags=["anoncreds"], summary="Retrieve an individual schemas details") +@docs(tags=["anoncreds - schemas"], summary="Retrieve an individual schemas details") @match_info_schema(SchemaIdMatchInfo()) @response_schema(GetSchemaResultSchema(), 200, description="") async def schema_get(request: web.BaseRequest): @@ -230,7 +230,7 @@ async def schema_get(request: web.BaseRequest): raise web.HTTPBadRequest(reason=e.roll_up) from e -@docs(tags=["anoncreds"], summary="Retrieve all schema ids") +@docs(tags=["anoncreds - schemas"], summary="Retrieve all schema ids") @querystring_schema(SchemasQueryStringSchema()) @response_schema(GetSchemasResponseSchema(), 200, description="") async def schemas_get(request: web.BaseRequest): @@ -364,7 +364,8 @@ class CredDefsQueryStringSchema(OpenAPISchema): @docs( - tags=["anoncreds"], summary="Create a credential definition on the connected ledger" + tags=["anoncreds - credential definitions"], + summary="Create a credential definition on the connected ledger", ) @request_schema(CredDefPostRequestSchema()) @response_schema(CredDefResultSchema(), 200, description="") @@ -409,7 +410,8 @@ async def cred_def_post(request: web.BaseRequest): @docs( - tags=["anoncreds"], summary="Retrieve an individual credential definition details" + tags=["anoncreds - credential definitions"], + summary="Retrieve an individual credential definition details", ) @match_info_schema(CredIdMatchInfo()) @response_schema(GetCredDefResultSchema(), 200, description="") @@ -450,7 +452,10 @@ class GetCredDefsResponseSchema(OpenAPISchema): ) -@docs(tags=["anoncreds"], summary="Retrieve all credential definition ids") +@docs( + tags=["anoncreds - credential definitions"], + summary="Retrieve all credential definition ids", +) @querystring_schema(CredDefsQueryStringSchema()) @response_schema(GetCredDefsResponseSchema(), 200, description="") async def cred_defs_get(request: web.BaseRequest): @@ -531,7 +536,7 @@ class RevRegCreateRequestSchema(OpenAPISchema): @docs( - tags=["anoncreds"], + tags=["anoncreds - revocation"], summary="Create and publish a registration revocation on the connected ledger", ) @request_schema(RevRegCreateRequestSchema()) @@ -611,7 +616,7 @@ class RevListCreateRequestSchema(OpenAPISchema): @docs( - tags=["anoncreds"], + tags=["anoncreds - revocation"], summary="Create and publish a revocation status list on the connected ledger", ) @request_schema(RevListCreateRequestSchema()) @@ -640,7 +645,7 @@ async def rev_list_post(request: web.BaseRequest): @docs( - tags=["anoncreds"], + tags=["anoncreds - revocation"], summary="Upload local tails file to server", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -670,7 +675,7 @@ async def upload_tails_file(request: web.BaseRequest): @docs( - tags=["anoncreds"], + tags=["anoncreds - revocation"], summary="Update the active registry", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -734,8 +739,15 @@ def post_process_routes(app: web.Application): app._state["swagger_dict"]["tags"] = [] app._state["swagger_dict"]["tags"].append( { - "name": "anoncreds", - "description": "Anoncreds management", + "name": "anoncreds - schemas", + "description": "Anoncreds schema management", + "externalDocs": {"description": "Specification", "url": SPEC_URI}, + } + ) + app._state["swagger_dict"]["tags"].append( + { + "name": "anoncreds - credential definitions", + "description": "Anoncreds credential definition management", "externalDocs": {"description": "Specification", "url": SPEC_URI}, } ) diff --git a/aries_cloudagent/config/default_context.py b/aries_cloudagent/config/default_context.py index 18e5c4a8ca..ad3b1b0ab4 100644 --- a/aries_cloudagent/config/default_context.py +++ b/aries_cloudagent/config/default_context.py @@ -19,8 +19,8 @@ from ..utils.dependencies import is_indy_sdk_module_installed from ..utils.stats import Collector from ..wallet.default_verification_key_strategy import ( - DefaultVerificationKeyStrategy, BaseVerificationKeyStrategy, + DefaultVerificationKeyStrategy, ) from ..wallet.did_method import DIDMethods from ..wallet.key_type import KeyTypes @@ -143,27 +143,34 @@ async def load_plugins(self, context: InjectionContext): plugin_registry.register_plugin("aries_cloudagent.settings") plugin_registry.register_plugin("aries_cloudagent.vc") plugin_registry.register_plugin("aries_cloudagent.wallet") + + anoncreds_plugins = [ + "aries_cloudagent.anoncreds", + "aries_cloudagent.anoncreds.default.did_indy", + "aries_cloudagent.anoncreds.default.did_web", + "aries_cloudagent.anoncreds.default.legacy_indy", + "aries_cloudagent.revocation_anoncreds", + ] + + askar_plugins = [ + "aries_cloudagent.messaging.credential_definitions", + "aries_cloudagent.messaging.schemas", + "aries_cloudagent.revocation", + ] + if wallet_type == "askar-anoncreds": - plugin_registry.register_plugin("aries_cloudagent.anoncreds") - plugin_registry.register_plugin( - "aries_cloudagent.anoncreds.default.did_indy" - ) - plugin_registry.register_plugin( - "aries_cloudagent.anoncreds.default.did_web" - ) - plugin_registry.register_plugin( - "aries_cloudagent.anoncreds.default.legacy_indy" - ) - plugin_registry.register_plugin("aries_cloudagent.revocation_anoncreds") + for plugin in anoncreds_plugins: + plugin_registry.register_plugin(plugin) else: - plugin_registry.register_plugin( - "aries_cloudagent.messaging.credential_definitions" - ) - plugin_registry.register_plugin("aries_cloudagent.messaging.schemas") - plugin_registry.register_plugin("aries_cloudagent.revocation") + for plugin in askar_plugins: + plugin_registry.register_plugin(plugin) if context.settings.get("multitenant.admin_enabled"): plugin_registry.register_plugin("aries_cloudagent.multitenant.admin") + for plugin in anoncreds_plugins: + plugin_registry.register_plugin(plugin) + for plugin in askar_plugins: + plugin_registry.register_plugin(plugin) # Register external plugins for plugin_path in self.settings.get("external_plugins", []): diff --git a/aries_cloudagent/protocols/revocation_notification/v1_0/routes.py b/aries_cloudagent/protocols/revocation_notification/v1_0/routes.py index 4b577315a2..c05f9244be 100644 --- a/aries_cloudagent/protocols/revocation_notification/v1_0/routes.py +++ b/aries_cloudagent/protocols/revocation_notification/v1_0/routes.py @@ -8,8 +8,8 @@ from ....messaging.responder import BaseResponder from ....revocation.util import ( REVOCATION_CLEAR_PENDING_EVENT, - REVOCATION_PUBLISHED_EVENT, REVOCATION_EVENT_PREFIX, + REVOCATION_PUBLISHED_EVENT, ) from ....storage.error import StorageError, StorageNotFoundError from .models.rev_notification_record import RevNotificationRecord diff --git a/aries_cloudagent/revocation_anoncreds/routes.py b/aries_cloudagent/revocation_anoncreds/routes.py index cac93d0104..b570fdfd76 100644 --- a/aries_cloudagent/revocation_anoncreds/routes.py +++ b/aries_cloudagent/revocation_anoncreds/routes.py @@ -68,6 +68,8 @@ LOGGER = logging.getLogger(__name__) +TAG_TITLE = "anoncreds - revocation" + class RevocationAnoncredsModuleResponseSchema(OpenAPISchema): """Response schema for Revocation Module.""" @@ -516,7 +518,7 @@ def validate_fields(self, data, **kwargs): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Revoke an issued credential", ) @request_schema(RevokeRequestSchema()) @@ -567,7 +569,7 @@ async def revoke(request: web.BaseRequest): raise web.HTTPBadRequest(reason=err.roll_up) from err -@docs(tags=["revocation"], summary="Publish pending revocations to ledger") +@docs(tags=[TAG_TITLE], summary="Publish pending revocations to ledger") @request_schema(PublishRevocationsSchema()) @response_schema(PublishRevocationsResultSchema(), 200, description="") async def publish_revocations(request: web.BaseRequest): @@ -600,7 +602,7 @@ async def publish_revocations(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Search for matching revocation registries that current agent created", ) @querystring_schema(RevRegsCreatedQueryStringSchema()) @@ -636,7 +638,7 @@ async def rev_regs_created(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Get revocation registry by revocation registry id", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -707,7 +709,7 @@ async def _get_issuer_rev_reg_record( @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Get current active revocation registry by credential definition id", ) @match_info_schema(RevocationCredDefIdMatchInfoSchema()) @@ -735,7 +737,7 @@ async def get_active_rev_reg(request: web.BaseRequest): return web.json_response({"result": rev_reg.serialize()}) -@docs(tags=["revocation"], summary="Rotate revocation registry") +@docs(tags=[TAG_TITLE], summary="Rotate revocation registry") @match_info_schema(RevocationCredDefIdMatchInfoSchema()) @response_schema(RevRegsCreatedSchema(), 200, description="") async def rotate_rev_reg(request: web.BaseRequest): @@ -762,7 +764,7 @@ async def rotate_rev_reg(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Get number of credentials issued against revocation registry", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -799,7 +801,7 @@ async def get_rev_reg_issued_count(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Get details of credentials issued against revocation registry", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -837,7 +839,7 @@ async def get_rev_reg_issued(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Get details of revoked credentials from ledger", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -877,7 +879,7 @@ async def get_rev_reg_indy_recs(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Fix revocation state in wallet and return number of updated entries", ) @match_info_schema(RevRegIdMatchInfoSchema()) @@ -970,7 +972,7 @@ async def update_rev_reg_revoked_state(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Get credential revocation status", ) @querystring_schema(CredRevRecordQueryStringSchema()) @@ -1008,7 +1010,7 @@ async def get_cred_rev_record(request: web.BaseRequest): @docs( - tags=["revocation"], + tags=[TAG_TITLE], summary="Download tails file", produces=["application/octet-stream"], ) @@ -1045,7 +1047,7 @@ async def get_tails_file(request: web.BaseRequest) -> web.FileResponse: return web.FileResponse(path=tails_local_path, status=200) -@docs(tags=["revocation"], summary="Set revocation registry state manually") +@docs(tags=[TAG_TITLE], summary="Set revocation registry state manually") @match_info_schema(RevRegIdMatchInfoSchema()) @querystring_schema(SetRevRegStateQueryStringSchema()) @response_schema(RevRegResultSchema(), 200, description="") @@ -1087,52 +1089,58 @@ async def register(app: web.Application): """Register routes.""" app.add_routes( [ - web.post("/revocation/revoke", revoke), - web.post("/revocation/publish-revocations", publish_revocations), + web.post("/anoncreds/revocation/revoke", revoke), + web.post("/anoncreds/revocation/publish-revocations", publish_revocations), web.get( - "/revocation/credential-record", get_cred_rev_record, allow_head=False + "/anoncreds/revocation/credential-record", + get_cred_rev_record, + allow_head=False, ), web.get( - "/revocation/registries/created", + "/anoncreds/revocation/registries/created", rev_regs_created, allow_head=False, ), - web.get("/revocation/registry/{rev_reg_id}", get_rev_reg, allow_head=False), web.get( - "/revocation/active-registry/{cred_def_id}", + "/anoncreds/revocation/registry/{rev_reg_id}", + get_rev_reg, + allow_head=False, + ), + web.get( + "/anoncreds/revocation/active-registry/{cred_def_id}", get_active_rev_reg, allow_head=False, ), web.post( - "/revocation/active-registry/{cred_def_id}/rotate", + "/anoncreds/revocation/active-registry/{cred_def_id}/rotate", rotate_rev_reg, ), web.get( - "/revocation/registry/{rev_reg_id}/issued", + "/anoncreds/revocation/registry/{rev_reg_id}/issued", get_rev_reg_issued_count, allow_head=False, ), web.get( - "/revocation/registry/{rev_reg_id}/issued/details", + "/anoncreds/revocation/registry/{rev_reg_id}/issued/details", get_rev_reg_issued, allow_head=False, ), web.get( - "/revocation/registry/{rev_reg_id}/issued/indy_recs", + "/anoncreds/revocation/registry/{rev_reg_id}/issued/indy_recs", get_rev_reg_indy_recs, allow_head=False, ), web.get( - "/revocation/registry/{rev_reg_id}/tails-file", + "/anoncreds/revocation/registry/{rev_reg_id}/tails-file", get_tails_file, allow_head=False, ), web.patch( - "/revocation/registry/{rev_reg_id}/set-state", + "/anoncreds/revocation/registry/{rev_reg_id}/set-state", set_rev_reg_state, ), web.put( - "/revocation/registry/{rev_reg_id}/fix-revocation-entry-state", + "/anoncreds/revocation/registry/{rev_reg_id}/fix-revocation-entry-state", update_rev_reg_revoked_state, ), ] @@ -1147,7 +1155,7 @@ def post_process_routes(app: web.Application): app._state["swagger_dict"]["tags"] = [] app._state["swagger_dict"]["tags"].append( { - "name": "revocation", + "name": TAG_TITLE, "description": "Revocation registry management", "externalDocs": { "description": "Overview",