diff --git a/apps/connection-manager/src/app/app.controller.ts b/apps/connection-manager/src/app/app.controller.ts
index a8c5c05cc61c66aae8fce0bf9e1c86cdbe4a3e8b..ae335291e68abc9a0c6e431aaa872519c7631595 100644
--- a/apps/connection-manager/src/app/app.controller.ts
+++ b/apps/connection-manager/src/app/app.controller.ts
@@ -7,7 +7,7 @@ import {
   ConnectionEvent,
   CreateInvitationResponseDto,
   GatewayAcceptedResponseDto,
-  GetConnectionRequestDto,
+  ConnectionRefDto,
   makeEvent,
 } from "@ocm-engine/dtos";
 
@@ -21,7 +21,7 @@ export class AppController {
   async create(
     @Body()
     payload: {
-      data: null | CreateInvitationResponseDto | GetConnectionRequestDto;
+      data: null | CreateInvitationResponseDto | ConnectionRefDto;
       type: ConnectionEvent;
       source: string;
     },
diff --git a/apps/gateway/src/app/managers/attestation.controller.ts b/apps/gateway/src/app/managers/attestation.controller.ts
index 536fc82cb7564ea2e17f888c4dcf3bd3ddc9d6b8..3e8c1fa9c0ac2bca490a178e7999e1be2dce6f42 100644
--- a/apps/gateway/src/app/managers/attestation.controller.ts
+++ b/apps/gateway/src/app/managers/attestation.controller.ts
@@ -2,7 +2,7 @@ import { Body, Controller, Get, Param, Post, UseFilters } from "@nestjs/common";
 import { AllExceptionsHandler } from "../exception.handler";
 import { AttestationManagerClient } from "@ocm-engine/clients";
 import {
-  AcceptCredentialOfferRequestDto,
+  CredentialRefDto,
   CreateCredentialDefinitionRequsetDto,
   CreateSchemaRequestDto,
   CRED_DEF_CREATE,
@@ -11,7 +11,7 @@ import {
   CRED_OFFER_ACCEPT,
   CRED_OFFER_LIST,
   GatewayAcceptedResponseDto,
-  GetSchemaRequestDto,
+  SchemaRefDto,
   IssueCredentialRequestDto,
   MakeBasicMessageRequestDto,
   MESSAGE_MAKE,
@@ -165,8 +165,8 @@ export class AttestationController {
       "Method will fetch specific schema or return null. The id of the response will be matched when you receive event from the websocket",
     tags: ["Schema"],
   })
-  async getSchemaById(@Body() schemaRequestDto: GetSchemaRequestDto) {
-    return this.amClient.sendPayload<GetSchemaRequestDto>({
+  async getSchemaById(@Body() schemaRequestDto: SchemaRefDto) {
+    return this.amClient.sendPayload<SchemaRefDto>({
       pattern: "schemas",
       payload: {
         source: "/schemas-by-id",
@@ -504,7 +504,7 @@ export class AttestationController {
     tags: ["Credentials Offers"],
   })
   acceptCredential(@Param("credential_record_id") credentialRecordId: string) {
-    const data = new AcceptCredentialOfferRequestDto();
+    const data = new CredentialRefDto();
     data.credentialRecordId = credentialRecordId;
     return this.amClient.sendPayload({
       pattern: "credentials",
diff --git a/apps/gateway/src/app/managers/connection.controller.ts b/apps/gateway/src/app/managers/connection.controller.ts
index 6ed9f7336ed7e9e7b81f3b4411bea213806c1ca8..8aec8f265561f06cf58f76b2f8904639b36a7cf3 100644
--- a/apps/gateway/src/app/managers/connection.controller.ts
+++ b/apps/gateway/src/app/managers/connection.controller.ts
@@ -15,7 +15,7 @@ import {
   CONNECTION_LIST,
   CreateInvitationResponseDto,
   GatewayAcceptedResponseDto,
-  GetConnectionRequestDto,
+  ConnectionRefDto,
 } from "@ocm-engine/dtos";
 import { AllExceptionsHandler } from "../exception.handler";
 import {
@@ -238,10 +238,10 @@ export class ConnectionController {
     tags: ["Connections"],
   })
   async getById(@Param("id") id: string) {
-    const request = new GetConnectionRequestDto();
+    const request = new ConnectionRefDto();
     request.connectionId = id;
 
-    return this.cmClient.sendPayload<GetConnectionRequestDto>({
+    return this.cmClient.sendPayload<ConnectionRefDto>({
       pattern: "connections",
       payload: {
         source: "/connections/:id",
diff --git a/apps/gateway/src/app/managers/proof.controller.ts b/apps/gateway/src/app/managers/proof.controller.ts
index 86e8a2999b23b7709918fdcd98719d1b894b87f6..91942b2ecaec6e6268a80161fd0d07210008ebd1 100644
--- a/apps/gateway/src/app/managers/proof.controller.ts
+++ b/apps/gateway/src/app/managers/proof.controller.ts
@@ -1,10 +1,8 @@
 import { Body, Controller, Get, Param, Post, UseFilters } from "@nestjs/common";
 import {
-  AcceptProofRequestDto,
-  DeclineProofRequestDto,
+  ProofRefDto,
   GatewayAcceptedResponseDto,
-  GetProofRequestDto,
-  GetSchemaRequestDto,
+  SchemaRefDto,
   IssueProofRequestDto,
   PROOF_ACCEPT,
   PROOF_DECLINE,
@@ -62,7 +60,7 @@ export class ProofController {
     tags: ["Credentials Proof"],
   })
   proofs() {
-    return this.pmClient.sendPayload<GetSchemaRequestDto>({
+    return this.pmClient.sendPayload<SchemaRefDto>({
       pattern: "proofs",
       payload: {
         source: "/credential/proofs",
@@ -108,10 +106,10 @@ export class ProofController {
     tags: ["Credentials Proof"],
   })
   getProofById(@Param("proof_record_id") proofRecordId: string) {
-    const data = new GetProofRequestDto();
+    const data = new ProofRefDto();
     data.proofRecordId = proofRecordId;
 
-    return this.pmClient.sendPayload<GetProofRequestDto>({
+    return this.pmClient.sendPayload<ProofRefDto>({
       pattern: "proofs",
       payload: {
         source: "/credentials/proof/:proof_record_id",
@@ -230,8 +228,8 @@ export class ProofController {
       "Method accept credential proof. The id of the response will be matched when you receive event from the websocket",
     tags: ["Credentials Proof"],
   })
-  acceptProof(@Body() acceptProofRequestDto: AcceptProofRequestDto) {
-    return this.pmClient.sendPayload<AcceptProofRequestDto>({
+  acceptProof(@Body() acceptProofRequestDto: ProofRefDto) {
+    return this.pmClient.sendPayload<ProofRefDto>({
       pattern: "proofs",
       payload: {
         source: "/credentials/proofs/accept",
@@ -277,10 +275,10 @@ export class ProofController {
     tags: ["Credentials Proof"],
   })
   declineProofRequest(@Param("proof_record_id") proofRecordId: string) {
-    const data = new DeclineProofRequestDto();
+    const data = new ProofRefDto();
     data.proofRecordId = proofRecordId;
 
-    return this.pmClient.sendPayload<DeclineProofRequestDto>({
+    return this.pmClient.sendPayload<ProofRefDto>({
       pattern: "proofs",
       payload: {
         source: "/credentials/proof/:proof_record_id/decline",
diff --git a/apps/proof-manager/src/app/app.controller.ts b/apps/proof-manager/src/app/app.controller.ts
index 8f80bb48ed6abd241e156069437b38519f8e79a9..2df10222b83ee1cc3752466755f8955d84c8ddcb 100644
--- a/apps/proof-manager/src/app/app.controller.ts
+++ b/apps/proof-manager/src/app/app.controller.ts
@@ -3,7 +3,7 @@ import { Body, Controller, Logger } from "@nestjs/common";
 import { ProducerService } from "@ocm-engine/nats";
 import { MessagePattern, RpcException } from "@nestjs/microservices";
 import {
-  AcceptProofRequestDto,
+  ProofRefDto,
   CloudEventDto,
   GatewayAcceptedResponseDto,
   makeEvent,
@@ -20,7 +20,7 @@ export class AppController {
   async create(
     @Body()
     payload: {
-      data: null | AcceptProofRequestDto;
+      data: null | ProofRefDto;
       type: ProofEvent;
       source: string;
     },
diff --git a/libs/askar/src/askar-nats/event.handler.service.ts b/libs/askar/src/askar-nats/event.handler.service.ts
index b1a634a6b3b166e1bcb849a4e5d0e6c53a0f87f4..39e24f6df01929a5c7e421028d10d5a610a2968f 100644
--- a/libs/askar/src/askar-nats/event.handler.service.ts
+++ b/libs/askar/src/askar-nats/event.handler.service.ts
@@ -1,8 +1,8 @@
 import { Injectable, Logger } from "@nestjs/common";
 import { AgentService } from "../askar/agent.service";
 import {
-  AcceptCredentialOfferRequestDto,
-  AcceptProofRequestDto,
+  CredentialRefDto,
+  ProofRefDto,
   CloudEventDto,
   CONNECTION_ACCEPT,
   CONNECTION_CREATE,
@@ -16,12 +16,11 @@ import {
   CRED_LIST,
   CRED_OFFER_ACCEPT,
   CRED_OFFER_LIST,
-  GetConnectionRequestDto,
-  GetSchemaRequestDto,
+  ConnectionRefDto,
+  SchemaRefDto,
   IssueCredentialRequestDto,
   IssueProofRequestDto,
   MakeBasicMessageRequestDto,
-  DeclineProofRequestDto,
   MESSAGE_MAKE,
   PROOF_ACCEPT,
   PROOF_ISSUE,
@@ -30,7 +29,6 @@ import {
   SCHEMA_CREATE,
   SCHEMA_GET,
   SCHEMA_LIST,
-  GetProofRequestDto,
   PROOF_DECLINE,
 } from "@ocm-engine/dtos";
 import asyncRetry from "async-retry";
@@ -60,7 +58,7 @@ export class EventHandlerService {
             break;
 
           case CONNECTION_GET:
-            dto = event.data as GetConnectionRequestDto;
+            dto = event.data as ConnectionRefDto;
             data = await this.agentService.getConnectionById(dto.connectionId);
             break;
 
@@ -73,7 +71,7 @@ export class EventHandlerService {
             break;
 
           case SCHEMA_GET:
-            dto = event.data as GetSchemaRequestDto;
+            dto = event.data as SchemaRefDto;
             data = await this.agentService.getSchemaById(dto.schemaId);
             break;
           case CRED_DEF_CREATE:
@@ -97,7 +95,7 @@ export class EventHandlerService {
             break;
 
           case CRED_OFFER_ACCEPT:
-            dto = event.data as AcceptCredentialOfferRequestDto;
+            dto = event.data as CredentialRefDto;
             data = await this.agentService.acceptCredential(
               dto.credentialRecordId,
             );
@@ -113,18 +111,18 @@ export class EventHandlerService {
             break;
 
           case PROOF_GET:
-            dto = event.data as GetProofRequestDto;
+            dto = event.data as ProofRefDto;
             data = await this.agentService.getProofById(dto.proofRecordId);
             break;
 
           case PROOF_ACCEPT:
             data = await this.agentService.acceptProof(
-              event.data as AcceptProofRequestDto,
+              event.data as ProofRefDto,
             );
             break;
 
           case PROOF_DECLINE:
-            dto = event.data as DeclineProofRequestDto;
+            dto = event.data as ProofRefDto;
             data = await this.agentService.declineProofRequest(
               dto.proofRecordId,
             );
diff --git a/libs/askar/src/askar-rest/rest.controller.ts b/libs/askar/src/askar-rest/rest.controller.ts
index 8227d7dd6ab466a4ce94aa370eb68f31f7c8a1b5..cc1a278039b3991c5ed318e0499e2f6ed98ede03 100644
--- a/libs/askar/src/askar-rest/rest.controller.ts
+++ b/libs/askar/src/askar-rest/rest.controller.ts
@@ -8,8 +8,7 @@ import {
   IssueProofRequestDto,
   CreateSchemaRequestDto,
   MakeBasicMessageRequestDto,
-  AcceptProofRequestDto,
-  GetProofRequestDto,
+  ProofRefDto,
 } from "@ocm-engine/dtos";
 import { AllExceptionsHandler } from "./exception.handler";
 
@@ -80,12 +79,12 @@ export class RestController {
   }
 
   @Get("credential/proof/:proof_record_id")
-  getProof(@Param("proof_record_id") data: GetProofRequestDto) {
+  getProof(@Param("proof_record_id") data: ProofRefDto) {
     return this.agentService.getProofById(data.proofRecordId);
   }
 
   @Post(`/credential/proof/accept`)
-  acceptProof(@Body() acceptProofRequestDto: AcceptProofRequestDto) {
+  acceptProof(@Body() acceptProofRequestDto: ProofRefDto) {
     return this.agentService.acceptProof(acceptProofRequestDto);
   }
 
diff --git a/libs/askar/src/askar/agent.service.ts b/libs/askar/src/askar/agent.service.ts
index f8fc64551742b3a47e78064507b77c55dd033bf4..c0369dbf923c0969d7cc54c5ad4d35a9fdc64c12 100644
--- a/libs/askar/src/askar/agent.service.ts
+++ b/libs/askar/src/askar/agent.service.ts
@@ -1,24 +1,23 @@
 import { Injectable } from "@nestjs/common";
 import { AskarService } from "./askar.service";
 import {
-  AcceptInvitationResponseDto,
-  AcceptProofRequestDto,
+  ConnectionRecordDto,
+  ProofRefDto,
   ConnectionNotFoundError,
   CreateCredentialDefinitionRequsetDto,
-  CreateCredentialDefinitionResponseDto,
+  CreddefRecordDto,
   CreateInvitationResponseDto,
   CreateSchemaRequestDto,
-  CreateSchemaResponseDto,
+  SchemaRecordDto,
   CredentialNotCreatedError,
   IssueCredentialRequestDto,
-  IssueCredentialResponseDto,
+  CredentialRecordDto,
   IssueProofRequestDto,
-  IssueProofResponseDto,
-  GetProofByIdResponseDto,
+  ProofRecordDto,
   MakeBasicMessageRequestDto,
   MakeBasicMessageResponseDto,
   SchemaNotCreatedError,
-  DeclineProofResponseDto,
+  SchemaNotFoundError,
 } from "@ocm-engine/dtos";
 import {
   AutoAcceptProof,
@@ -54,7 +53,7 @@ export class AgentService {
       throw new ConnectionNotFoundError();
     }
 
-    const r = new AcceptInvitationResponseDto();
+    const r = new ConnectionRecordDto();
     r.connectionName = connectionRecord.theirLabel;
     r.connectionId = connectionRecord.id;
     r.did = connectionRecord.did;
@@ -65,20 +64,89 @@ export class AgentService {
     return r;
   };
 
-  fetchConnections() {
-    return this.askar.agent.connections.getAll();
+  async fetchConnections() {
+    let agentResponse = await this.askar.agent.connections.getAll();
+
+    let connectionArray = agentResponse.map((singleConnectionRes) => {
+      let connectionResponse = new ConnectionRecordDto();
+      connectionResponse.connectionId = singleConnectionRes.id;
+      connectionResponse.state = singleConnectionRes.state;
+      connectionResponse.connectionName = singleConnectionRes.theirLabel;
+      connectionResponse.alias = singleConnectionRes.alias;
+      connectionResponse.did = singleConnectionRes.did;
+      connectionResponse.invitationDid = singleConnectionRes.invitationDid;
+      connectionResponse.outOfBandId = singleConnectionRes.outOfBandId;
+      connectionResponse.createdAt = singleConnectionRes.createdAt;
+
+
+      return connectionResponse
+    })
+
+    if (connectionArray.length < 1) {
+      throw new ConnectionNotFoundError();
+    }
+
+    return connectionArray
   }
 
-  getConnectionById = (id: string) => {
-    return this.askar.agent.connections.findById(id);
+  getConnectionById = async (id: string) => {
+    let agentResponse = await this.askar.agent.connections.findById(id);
+
+    if (!agentResponse) {
+      throw new ConnectionNotFoundError();
+    }
+
+    let connectionResponse = new ConnectionRecordDto();
+    connectionResponse.connectionId = agentResponse.id;
+    connectionResponse.state = agentResponse.state;
+    connectionResponse.connectionName = agentResponse.theirLabel;
+    connectionResponse.alias = agentResponse.alias;
+    connectionResponse.did = agentResponse.did;
+    connectionResponse.invitationDid = agentResponse.invitationDid;
+    connectionResponse.outOfBandId = agentResponse.outOfBandId;
+    connectionResponse.createdAt = agentResponse.createdAt;
+
+
+    return connectionResponse
   };
 
-  fetchSchemas = () => {
-    return this.askar.agent.modules.anoncreds.getCreatedSchemas({});
+  fetchSchemas = async () => {
+    let agentResponse = await this.askar.agent.modules.anoncreds.getCreatedSchemas({});
+
+    let schemaResponse = agentResponse.map((singleSchemaRes) => {
+      let schemaResponse = new SchemaRecordDto();
+      schemaResponse.schemaId = singleSchemaRes.schemaId;
+      schemaResponse.name = singleSchemaRes.schema.name;
+      schemaResponse.attributes = singleSchemaRes.schema.attrNames;
+      schemaResponse.version = singleSchemaRes.schema.version;
+      schemaResponse.issuerId = singleSchemaRes.schema.issuerId;
+      schemaResponse.methodName = singleSchemaRes.methodName;
+  
+      return schemaResponse
+    })
+
+    if (schemaResponse.length < 1) {
+      throw new SchemaNotFoundError()
+    }
+
+    return schemaResponse
   };
 
-  getSchemaById = (schemaId: string) => {
-    return this.askar.agent.modules.anoncreds.getSchema(schemaId);
+  getSchemaById = async (schemaId: string) => {
+    let agentResponse = await this.askar.agent.modules.anoncreds.getSchema(schemaId);
+
+    if (!agentResponse || !agentResponse.schema) {
+      throw new SchemaNotFoundError();
+    }
+
+    let schemaResponse = new SchemaRecordDto();
+    schemaResponse.schemaId = agentResponse.schemaId;
+    schemaResponse.name = agentResponse.schema.name;
+    schemaResponse.attributes = agentResponse.schema.attrNames;
+    schemaResponse.version = agentResponse.schema.version;
+    schemaResponse.issuerId = agentResponse.schema.issuerId;
+
+    return schemaResponse
   };
 
   createSchema = async (schema: CreateSchemaRequestDto) => {
@@ -99,7 +167,7 @@ export class AgentService {
       throw new SchemaNotCreatedError();
     }
 
-    const response = new CreateSchemaResponseDto();
+    const response = new SchemaRecordDto();
 
     response.name = schemaResult.schemaState.schema.name;
     response.schemaId = schemaResult.schemaState.schemaId;
@@ -129,12 +197,12 @@ export class AgentService {
       throw new CredentialNotCreatedError();
     }
 
-    const response = new CreateCredentialDefinitionResponseDto();
+    const response = new CreddefRecordDto();
     response.credentialDefinitionId =
       credDef.credentialDefinitionState.credentialDefinitionId;
     response.schemaId =
       credDef.credentialDefinitionState.credentialDefinition.schemaId;
-    response.isserId =
+    response.issuerId =
       credDef.credentialDefinitionState.credentialDefinition.issuerId;
     response.tag = credDef.credentialDefinitionState.credentialDefinition.tag;
 
@@ -160,7 +228,7 @@ export class AgentService {
         });
       console.log(JSON.stringify(credentialExchangeRecord, null, 2));
 
-      const response = new IssueCredentialResponseDto();
+      const response = new CredentialRecordDto();
       response.credentialId = credentialExchangeRecord.id;
       response.connectionId = credentialExchangeRecord.connectionId;
       response.attributes = credentialExchangeRecord.credentialAttributes;
@@ -188,7 +256,7 @@ export class AgentService {
         credentialRecordId,
       });
 
-    const response = new IssueCredentialResponseDto();
+    const response = new CredentialRecordDto();
     response.credentialId = credentialExchangeRecord.id;
     response.connectionId = credentialExchangeRecord.connectionId;
     response.attributes = credentialExchangeRecord.credentialAttributes;
@@ -202,9 +270,9 @@ export class AgentService {
       state: CredentialState.Done,
     });
 
-    const response: Array<IssueCredentialResponseDto> = [];
+    const response: Array<CredentialRecordDto> = [];
     for (const offer of credentials) {
-      const t = new IssueCredentialResponseDto();
+      const t = new CredentialRecordDto();
       t.credentialId = offer.id;
       t.connectionId = offer.connectionId;
       t.createdAt = offer.createdAt;
@@ -220,9 +288,9 @@ export class AgentService {
       state: CredentialState.OfferReceived,
     });
 
-    const response: Array<IssueCredentialResponseDto> = [];
+    const response: Array<CredentialRecordDto> = [];
     for (const offer of offers) {
-      const t = new IssueCredentialResponseDto();
+      const t = new CredentialRecordDto();
       t.credentialId = offer.id;
       t.connectionId = offer.connectionId;
       t.createdAt = offer.createdAt;
@@ -290,7 +358,7 @@ export class AgentService {
       },
     });
 
-    const response = new IssueProofResponseDto();
+    const response = new ProofRecordDto();
     response.proofId = exchangeRecord.id;
     response.connectionId = exchangeRecord.connectionId;
     response.state = exchangeRecord.state;
@@ -305,9 +373,9 @@ export class AgentService {
       state: ProofState.RequestReceived,
     });
 
-    const response: Array<IssueProofResponseDto> = [];
+    const response: Array<ProofRecordDto> = [];
     for (const proof of proofs) {
-      const t = new IssueProofResponseDto();
+      const t = new ProofRecordDto();
       t.proofId = proof.id;
       t.connectionId = proof.connectionId;
       t.state = proof.state;
@@ -327,7 +395,7 @@ export class AgentService {
       return proofRecord;
     }
 
-    const proofResponse = new GetProofByIdResponseDto();
+    const proofResponse = new ProofRecordDto();
 
     proofResponse.proofId = proofRecord.id;
     proofResponse.connectionId = proofRecord.connectionId;
@@ -338,11 +406,11 @@ export class AgentService {
     return proofResponse;
   };
 
-  acceptProof = async (acceptProofDto: AcceptProofRequestDto) => {
+  acceptProof = async (acceptProofDto: ProofRefDto) => {
     if (acceptProofDto.proofUrl) {
       return this.acceptOobProof(acceptProofDto.proofUrl);
     }
-    return this.acceptConnectionProof(acceptProofDto.proofId);
+    return this.acceptConnectionProof(acceptProofDto.proofRecordId);
   };
 
   acceptOobProof = async (url: string) => {
@@ -366,7 +434,7 @@ export class AgentService {
       proofFormats: requestedCredentials.proofFormats,
     });
 
-    const response = new IssueProofResponseDto();
+    const response = new ProofRecordDto();
 
     response.proofId = acceptedRecord.id;
     response.state = acceptedRecord.state;
@@ -392,7 +460,7 @@ export class AgentService {
 
     console.log(JSON.stringify(proof, null, 2));
 
-    const response = new IssueProofResponseDto();
+    const response = new ProofRecordDto();
     response.proofId = proof.id;
     response.connectionId = proof.connectionId;
     response.state = proof.state;
@@ -408,7 +476,7 @@ export class AgentService {
       // sendProblemReport: false, // REVIEW: do we have a use case for this key?
     });
 
-    const declineResponse = new DeclineProofResponseDto();
+    const declineResponse = new ProofRecordDto();
     declineResponse.proofId = resultFromDecline.id;
     declineResponse.connectionId = resultFromDecline.connectionId;
     declineResponse.state = resultFromDecline.state;
@@ -433,7 +501,7 @@ export class AgentService {
     const connectionInfo = await this.getConnectionById(message.connectionId);
 
     response.connectionId = m.connectionId;
-    response.to = connectionInfo?.theirLabel || "";
+    response.to = connectionInfo?.connectionName || "";
     response.id = m.id;
     response.message = m.content;
 
diff --git a/libs/dtos/src/dtos/generics/connection.record.dto.ts b/libs/dtos/src/dtos/generics/connection.record.dto.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0e0f86ed81ec28cc72eed742b3b458391895e85d
--- /dev/null
+++ b/libs/dtos/src/dtos/generics/connection.record.dto.ts
@@ -0,0 +1,38 @@
+import { IsDateString, IsNotEmpty, IsString } from "class-validator";
+
+
+// INFO: should cover:
+
+// 1. get connection response
+// 2. accept connection response
+
+
+export class ConnectionRecordDto {
+  //@example 6464b521-005a-4379-91e0-a3692b31cafd
+  @IsNotEmpty()
+  @IsString()
+  connectionId: string;
+
+  @IsNotEmpty()
+  @IsString()
+  state: string;
+
+  @IsString()
+  connectionName?: string;
+
+  @IsString()
+  alias?: string;
+
+  @IsString()
+  did?: string;
+
+  @IsString()
+  invitationDid?: string;
+
+  @IsString()
+  outOfBandId?: string;
+
+  @IsDateString()
+  @IsNotEmpty()
+  createdAt: Date;
+}
\ No newline at end of file
diff --git a/libs/dtos/src/dtos/requests/get.connection.request.dto.ts b/libs/dtos/src/dtos/generics/connection.ref.dto.ts
similarity index 64%
rename from libs/dtos/src/dtos/requests/get.connection.request.dto.ts
rename to libs/dtos/src/dtos/generics/connection.ref.dto.ts
index 786adaf646d3a1d7e3ec06060b4fa478fa3f47d4..a935be7c5031b9faf659eeb439973f92c40ed97f 100644
--- a/libs/dtos/src/dtos/requests/get.connection.request.dto.ts
+++ b/libs/dtos/src/dtos/generics/connection.ref.dto.ts
@@ -1,6 +1,12 @@
 import { IsNotEmpty, IsString } from "class-validator";
 
-export class GetConnectionRequestDto {
+
+// INFO: should cover:
+
+// 1. get connection request
+
+
+export class ConnectionRefDto {
   //@example 6464b521-005a-4379-91e0-a3692b31cafd
   @IsNotEmpty()
   @IsString()
diff --git a/libs/dtos/src/dtos/responses/create.credential.definition.response.dto.ts b/libs/dtos/src/dtos/generics/creddef.record.dto.ts
similarity index 60%
rename from libs/dtos/src/dtos/responses/create.credential.definition.response.dto.ts
rename to libs/dtos/src/dtos/generics/creddef.record.dto.ts
index b45b8c4dd0fef80022fac5ad550262b500321f94..c4ade28ceac27be8e6c7985986e8b75172b0e362 100644
--- a/libs/dtos/src/dtos/responses/create.credential.definition.response.dto.ts
+++ b/libs/dtos/src/dtos/generics/creddef.record.dto.ts
@@ -1,6 +1,13 @@
 import { IsNotEmpty, IsString } from "class-validator";
 
-export class CreateCredentialDefinitionResponseDto {
+
+// INFO: should cover:
+
+// 1. get credential definition response
+// 2. create credential definition response
+
+
+export class CreddefRecordDto {
   @IsNotEmpty()
   @IsString()
   credentialDefinitionId: string;
@@ -11,7 +18,7 @@ export class CreateCredentialDefinitionResponseDto {
 
   @IsNotEmpty()
   @IsString()
-  isserId: string;
+  issuerId: string;
 
   @IsNotEmpty()
   @IsString()
diff --git a/libs/dtos/src/dtos/generics/creddef.ref.dto.ts b/libs/dtos/src/dtos/generics/creddef.ref.dto.ts
new file mode 100644
index 0000000000000000000000000000000000000000..636e0fae06fee876d411745f0aa0e2402f972870
--- /dev/null
+++ b/libs/dtos/src/dtos/generics/creddef.ref.dto.ts
@@ -0,0 +1,12 @@
+import { IsNotEmpty, IsString } from "class-validator";
+
+// INFO: should cover:
+
+// 1. get credential definition request
+
+
+export class CreddefRefDto {
+  @IsNotEmpty()
+  @IsString()
+  credentialDefinitionId: string;
+}
diff --git a/libs/dtos/src/dtos/responses/issue.credential.response.dto.ts b/libs/dtos/src/dtos/generics/credential.record.dto.ts
similarity index 86%
rename from libs/dtos/src/dtos/responses/issue.credential.response.dto.ts
rename to libs/dtos/src/dtos/generics/credential.record.dto.ts
index 82f6c702f83eb2ac6567b53981307546f4691035..4ca5d5719960d351b8e79b515a4536e0847213dc 100644
--- a/libs/dtos/src/dtos/responses/issue.credential.response.dto.ts
+++ b/libs/dtos/src/dtos/generics/credential.record.dto.ts
@@ -8,6 +8,14 @@ import {
 import { Type } from "class-transformer";
 import { IssueCredentialAttributes } from "../requests/issue.credential.request.dto";
 
+
+// INFO: should cover:
+
+// 1. create credential response
+// 2. get credential response
+
+
+
 export class Credential {
   @IsNotEmpty()
   @IsString()
@@ -18,7 +26,7 @@ export class Credential {
   credentialRecordId: string;
 }
 
-export class IssueCredentialResponseDto {
+export class CredentialRecordDto {
   @IsArray()
   @ValidateNested({ each: true })
   @Type(() => Credential)
diff --git a/libs/dtos/src/dtos/requests/accept.credential.offer.request.dto.ts b/libs/dtos/src/dtos/generics/credential.ref.dto.ts
similarity index 57%
rename from libs/dtos/src/dtos/requests/accept.credential.offer.request.dto.ts
rename to libs/dtos/src/dtos/generics/credential.ref.dto.ts
index baaa860e4e40458f64af76f576939d8e72eb8779..16efe77a10d3b804ec7fd118dac7f00635a202e6 100644
--- a/libs/dtos/src/dtos/requests/accept.credential.offer.request.dto.ts
+++ b/libs/dtos/src/dtos/generics/credential.ref.dto.ts
@@ -1,8 +1,17 @@
 import { IsNotEmpty, IsString } from "class-validator";
 
-export class AcceptCredentialOfferRequestDto {
+
+
+// INFO: should cover:
+
+// 1. accept credential request
+// 2. get credential request
+
+
+
+export class CredentialRefDto {
   //@example cf8395a5-9a53-4e06-8a5d-04e0fc00ca04
   @IsNotEmpty()
   @IsString()
   credentialRecordId: string;
-}
+}
\ No newline at end of file
diff --git a/libs/dtos/src/dtos/responses/get.proof.response.dto.ts b/libs/dtos/src/dtos/generics/proof.record.dto.ts
similarity index 69%
rename from libs/dtos/src/dtos/responses/get.proof.response.dto.ts
rename to libs/dtos/src/dtos/generics/proof.record.dto.ts
index d044786caa05eadd9a57eb1836369f03ffbbc2e4..5a71b0cdea8b27ebafea9daeb6970c5383e56921 100644
--- a/libs/dtos/src/dtos/responses/get.proof.response.dto.ts
+++ b/libs/dtos/src/dtos/generics/proof.record.dto.ts
@@ -4,7 +4,14 @@ import {
   IsString 
 } from "class-validator";
 
-export class GetProofByIdResponseDto {
+
+// INFO: should cover:
+
+// 1. decline proof response
+// 2. get proof response
+// 3. issue proof response
+
+export class ProofRecordDto {
   @IsString()
   @IsNotEmpty()
   proofId: string;
diff --git a/libs/dtos/src/dtos/generics/proof.ref.dto.ts b/libs/dtos/src/dtos/generics/proof.ref.dto.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a90a890bb66ed8b6d6d6a41618798e53f3f505e6
--- /dev/null
+++ b/libs/dtos/src/dtos/generics/proof.ref.dto.ts
@@ -0,0 +1,17 @@
+import { IsNotEmpty, IsString } from "class-validator";
+
+
+// INFO: should cover:
+
+// 1. get proof request
+// 2. decline proof request
+// 3. accept proof request
+
+export class ProofRefDto {
+  @IsString()
+  @IsNotEmpty()
+  proofRecordId: string;
+
+  @IsString()
+  proofUrl?: string;
+}
\ No newline at end of file
diff --git a/libs/dtos/src/dtos/generics/schema.record.dto.ts b/libs/dtos/src/dtos/generics/schema.record.dto.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2c4e889b94adaa21b0ac262c9a8eade3c8059f20
--- /dev/null
+++ b/libs/dtos/src/dtos/generics/schema.record.dto.ts
@@ -0,0 +1,33 @@
+import { IsDateString, IsNotEmpty, IsString } from "class-validator";
+
+
+// INFO: should cover:
+
+// 1. create schema response
+// 2. get schema response
+
+export class SchemaRecordDto {
+  @IsNotEmpty()
+  @IsString()
+  schemaId: string;
+
+  @IsString()
+  @IsNotEmpty()
+  name: string;
+
+  @IsNotEmpty()
+  attributes: string[];
+
+  @IsNotEmpty()
+  @IsString()
+  version: string;
+
+  @IsDateString()
+  updatedAt?: Date;
+
+  @IsString()
+  issuerId?: string;
+
+  @IsString()
+  methodName?: string;
+}
\ No newline at end of file
diff --git a/libs/dtos/src/dtos/requests/get.schema.request.dto.ts b/libs/dtos/src/dtos/generics/schema.ref.dto.ts
similarity index 71%
rename from libs/dtos/src/dtos/requests/get.schema.request.dto.ts
rename to libs/dtos/src/dtos/generics/schema.ref.dto.ts
index acdf35ca546ede92f0f5aa27097b892a9ba14bfc..8bc0debe2c82d07d846784c222c365ecf0e62e0c 100644
--- a/libs/dtos/src/dtos/requests/get.schema.request.dto.ts
+++ b/libs/dtos/src/dtos/generics/schema.ref.dto.ts
@@ -1,6 +1,11 @@
 import { IsNotEmpty, IsString } from "class-validator";
 
-export class GetSchemaRequestDto {
+
+// INFO: should cover:
+
+// 1. get schema request
+
+export class SchemaRefDto {
   //@example "did:indy:LEDNGER:SXM76gQwRnjkgoz2oBnGjd/anoncreds/v0/SCHEMA/test schema/1.0.2"
   @IsNotEmpty()
   @IsString()
diff --git a/libs/dtos/src/dtos/requests/accept.proof.request.dto.ts b/libs/dtos/src/dtos/requests/accept.proof.request.dto.ts
deleted file mode 100644
index 5483583ebef614b46ee6cae700136126f61f8f26..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/requests/accept.proof.request.dto.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { IsNotEmpty, IsString, ValidateIf } from "class-validator";
-
-export class AcceptProofRequestDto {
-  @IsString()
-  @IsNotEmpty()
-  @ValidateIf((o) => o.proofUrl === undefined)
-  proofId: string;
-
-  @IsString()
-  @IsNotEmpty()
-  @ValidateIf((o) => o.proofId === undefined)
-  proofUrl: string;
-}
diff --git a/libs/dtos/src/dtos/requests/create.credential.definition.requset.dto.ts b/libs/dtos/src/dtos/requests/create.credential.definition.request.dto.ts
similarity index 100%
rename from libs/dtos/src/dtos/requests/create.credential.definition.requset.dto.ts
rename to libs/dtos/src/dtos/requests/create.credential.definition.request.dto.ts
diff --git a/libs/dtos/src/dtos/requests/decline.proof.request.dto.ts b/libs/dtos/src/dtos/requests/decline.proof.request.dto.ts
deleted file mode 100644
index 2b37d7f4d915c4c193426f7c04d7d1db1ca80da4..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/requests/decline.proof.request.dto.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { IsBoolean, IsNotEmpty, IsString } from "class-validator";
-
-export class DeclineProofRequestDto {
-  @IsString()
-  @IsNotEmpty()
-  proofRecordId: string;
-
-  @IsBoolean()
-  sendProblemReport?: boolean;
-}
\ No newline at end of file
diff --git a/libs/dtos/src/dtos/requests/get.proof.request.dto.ts b/libs/dtos/src/dtos/requests/get.proof.request.dto.ts
deleted file mode 100644
index fdc7f72fdfbf960f6c20d4d36366cfb9afbfc7fc..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/requests/get.proof.request.dto.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { IsNotEmpty, IsString } from "class-validator";
-
-export class GetProofRequestDto {
-  @IsString()
-  @IsNotEmpty()
-  proofRecordId: string;
-}
diff --git a/libs/dtos/src/dtos/responses/accept.invitation.response.dto.ts b/libs/dtos/src/dtos/responses/accept.invitation.response.dto.ts
deleted file mode 100644
index c3e482ae58fed1ae2d5448b67003fce64406cf38..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/responses/accept.invitation.response.dto.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export class AcceptInvitationResponseDto {
-  public connectionId: string;
-  public connectionName?: string;
-  public did?: string;
-  public invitationDid?: string;
-  public outOfBandId?: string;
-  public createdAt: Date;
-}
diff --git a/libs/dtos/src/dtos/responses/create.schema.response.dto.ts b/libs/dtos/src/dtos/responses/create.schema.response.dto.ts
deleted file mode 100644
index a36c118ec11d0850d02e87cdc4bc916f5b781d5d..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/responses/create.schema.response.dto.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { ArrayMinSize, IsArray, IsNotEmpty, IsString } from "class-validator";
-
-export class CreateSchemaResponseDto {
-  @IsNotEmpty()
-  @IsString()
-  schemaId: string;
-
-  @IsNotEmpty()
-  @IsString()
-  issuerId: string;
-
-  @IsNotEmpty()
-  @IsString()
-  name: string;
-
-  @IsNotEmpty()
-  @IsString()
-  version: string;
-
-  @IsArray()
-  @IsString({ each: true })
-  @ArrayMinSize(1)
-  attributes: string[];
-}
diff --git a/libs/dtos/src/dtos/responses/decline.proof.response.dto.ts b/libs/dtos/src/dtos/responses/decline.proof.response.dto.ts
deleted file mode 100644
index e8e4885995ca4ff29db1dc4ac39b0bd8183389d3..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/responses/decline.proof.response.dto.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { 
-  IsDateString, 
-  IsNotEmpty, 
-  IsString 
-} from "class-validator";
-
-export class DeclineProofResponseDto {
-  @IsString()
-  @IsNotEmpty()
-  proofId: string;
-
-  @IsString()
-  connectionId?: string;
-
-  @IsString()
-  @IsNotEmpty()
-  state: string;
-
-  @IsDateString()
-  updatedAt?: Date;
-
-  @IsNotEmpty()
-  @IsDateString()
-  createdAt: Date;
-}
\ No newline at end of file
diff --git a/libs/dtos/src/dtos/responses/issue.proof.response.dto.ts b/libs/dtos/src/dtos/responses/issue.proof.response.dto.ts
deleted file mode 100644
index 01d9789d07ab383f724c0f25b21037d387043419..0000000000000000000000000000000000000000
--- a/libs/dtos/src/dtos/responses/issue.proof.response.dto.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { IsDateString, IsNotEmpty, IsString } from "class-validator";
-
-export class IssueProofResponseDto {
-  @IsString()
-  @IsNotEmpty()
-  proofId: string;
-
-  //@example 6464b521-005a-4379-91e0-a3692b31cafd
-  @IsString()
-  connectionId?: string;
-
-  @IsString()
-  @IsNotEmpty()
-  state: string;
-
-  @IsDateString()
-  updatedAt?: Date;
-
-  @IsNotEmpty()
-  @IsDateString()
-  createdAt: Date;
-}
diff --git a/libs/dtos/src/errors/schema.not.found.error.ts b/libs/dtos/src/errors/schema.not.found.error.ts
new file mode 100644
index 0000000000000000000000000000000000000000..68ba71472c68dcc63b398fa3e2f8bbb2f246d648
--- /dev/null
+++ b/libs/dtos/src/errors/schema.not.found.error.ts
@@ -0,0 +1,10 @@
+export class SchemaNotFoundError extends Error {
+  constructor(message = "Schema not found") {
+    super(message);
+    this.name = "SchemaNotFoundError";
+
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, SchemaNotFoundError);
+    }
+  }
+}
\ No newline at end of file
diff --git a/libs/dtos/src/events/dtoToEventTransformer.ts b/libs/dtos/src/events/dtoToEventTransformer.ts
index a120dee89f47017180b2ffa1d8a3eeab2bf48fd9..328e56b2ee1e8a4154da47a1febed16528a11afa 100644
--- a/libs/dtos/src/events/dtoToEventTransformer.ts
+++ b/libs/dtos/src/events/dtoToEventTransformer.ts
@@ -8,34 +8,30 @@ import {
 } from "./types";
 import { CloudEventDto } from "./event";
 import { ConnectionUnsupportedTypeError } from "../errors/connection.unsupported.type.error";
-import { CreateCredentialDefinitionRequsetDto } from "../dtos/requests/create.credential.definition.requset.dto";
+import { CreateCredentialDefinitionRequsetDto } from "../dtos/requests/create.credential.definition.request.dto";
 import { CreateInvitationResponseDto } from "../dtos/responses/create.invitation.response.dto";
 import { CreateSchemaRequestDto } from "../dtos/requests/create.schema.request.dto";
-import { GetConnectionRequestDto } from "../dtos/requests/get.connection.request.dto";
+import { ConnectionRefDto } from "../dtos/generics/connection.ref.dto";
 import { IssueCredentialRequestDto } from "../dtos/requests/issue.credential.request.dto";
 import { IssueProofRequestDto } from "../dtos/requests/issue.proof.request.dto";
-import { AcceptCredentialOfferRequestDto } from "../dtos/requests/accept.credential.offer.request.dto";
+import { CredentialRefDto } from "../dtos/generics/credential.ref.dto";
 import { MakeBasicMessageResponseDto } from "../dtos/responses/make.basic.message.response.dto";
 import { MakeBasicMessageRequestDto } from "../dtos/requests/make.basic.message.request.dto";
-import { AcceptProofRequestDto } from "../dtos/requests/accept.proof.request.dto";
-import { GetProofByIdResponseDto } from "../dtos/responses/get.proof.response.dto";
-import { DeclineProofRequestDto } from '../dtos/requests/decline.proof.request.dto';
-import { DeclineProofResponseDto } from "../dtos/responses/decline.proof.response.dto";
+import { ProofRefDto } from "../dtos/generics/proof.ref.dto";
+import { ProofRecordDto } from "../dtos/generics/proof.record.dto";
 
 export const makeEvent = (payload: {
   data:
     | null
     | IssueProofRequestDto
-    | AcceptCredentialOfferRequestDto
+    | CredentialRefDto
     | CreateInvitationResponseDto
-    | GetConnectionRequestDto
+    | ConnectionRefDto
     | CreateSchemaRequestDto
-    | AcceptProofRequestDto
-    | DeclineProofRequestDto
-    | DeclineProofResponseDto
+    | ProofRefDto
     | CreateSchemaRequestDto
     | CreateCredentialDefinitionRequsetDto
-    | GetProofByIdResponseDto
+    | ProofRecordDto
     | IssueCredentialRequestDto
     | MakeBasicMessageResponseDto
     | MakeBasicMessageRequestDto;
diff --git a/libs/dtos/src/index.ts b/libs/dtos/src/index.ts
index ce0ac84aac42b0426913d8f6ed022b7e085fc050..f5021a4dc3719dde1ef6dda64d69fb32a9c08233 100644
--- a/libs/dtos/src/index.ts
+++ b/libs/dtos/src/index.ts
@@ -1,32 +1,34 @@
 export * from "./dtos.module";
+
+
+export * from "./dtos/generics/connection.record.dto";
+export * from "./dtos/generics/connection.ref.dto";
+export * from "./dtos/generics/creddef.record.dto";
+export * from "./dtos/generics/creddef.ref.dto";
+export * from "./dtos/generics/credential.record.dto";
+export * from "./dtos/generics/credential.ref.dto";
+export * from "./dtos/generics/proof.record.dto";
+export * from "./dtos/generics/proof.ref.dto";
+export * from "./dtos/generics/schema.record.dto";
+export * from "./dtos/generics/schema.ref.dto";
+
+
 export * from "./dtos/requests/create.schema.request.dto";
-export * from "./dtos/requests/create.credential.definition.requset.dto";
+export * from "./dtos/requests/create.credential.definition.request.dto";
 export * from "./dtos/requests/issue.credential.request.dto";
 export * from "./dtos/requests/issue.proof.request.dto";
-export * from "./dtos/requests/get.connection.request.dto";
-export * from "./dtos/requests/get.schema.request.dto";
-export * from "./dtos/requests/accept.credential.offer.request.dto";
-export * from "./dtos/requests/accept.proof.request.dto";
 export * from "./dtos/requests/make.basic.message.request.dto";
-export * from "./dtos/requests/get.proof.request.dto";
-export * from "./dtos/requests/decline.proof.request.dto";
 
 export * from "./dtos/responses/create.invitation.response.dto";
-export * from "./dtos/responses/accept.invitation.response.dto";
-export * from "./dtos/responses/create.schema.response.dto";
-export * from "./dtos/responses/create.credential.definition.response.dto";
-export * from "./dtos/responses/issue.credential.response.dto";
-export * from "./dtos/responses/issue.proof.response.dto";
 export * from "./dtos/responses/gateway.accepted.response.dto";
 export * from "./dtos/responses/make.basic.message.response.dto";
-export * from "./dtos/responses/get.proof.response.dto";
-export * from "./dtos/responses/decline.proof.response.dto";
 
 export * from "./errors/connection.not.found.error";
 export * from "./errors/schema.not.created.error";
 export * from "./errors/credential.not.created.error";
 export * from "./errors/ledger.provider.fail.registration.error";
 export * from "./errors/connection.unsupported.type.error";
+export * from "./errors/schema.not.found.error";
 
 export * from "./events/event";
 export * from "./events/types";