diff --git a/apps/schema-manager/src/application.ts b/apps/schema-manager/src/application.ts
index f255cc8a13fa5f04402231d08eda5fe88a0701bb..9b9f46fa40c7ebd0d4e15ff9fee9571b969f2ed2 100644
--- a/apps/schema-manager/src/application.ts
+++ b/apps/schema-manager/src/application.ts
@@ -2,6 +2,7 @@ import type { ConfigType } from '@nestjs/config';
 
 import { Module } from '@nestjs/common';
 import { ConfigModule } from '@nestjs/config';
+import { RouterModule } from '@nestjs/core';
 import { ClientsModule, Transport } from '@nestjs/microservices';
 
 import { NATS_CLIENT } from './common/constants.js';
@@ -9,6 +10,7 @@ import { httpConfig } from './config/http.config.js';
 import { natsConfig } from './config/nats.config.js';
 import { ssiConfig } from './config/ssi.config.js';
 import { validationSchema } from './config/validation.js';
+import { CredentialDefinitionsModule } from './credential-definitions/credential-definitions.module.js';
 import { HealthModule } from './health/health.module.js';
 import { SchemasModule } from './schemas/schemas.module.js';
 
@@ -43,7 +45,15 @@ import { SchemasModule } from './schemas/schemas.module.js';
     }),
 
     HealthModule,
+
     SchemasModule,
+    CredentialDefinitionsModule,
+
+    RouterModule.register([
+      { module: HealthModule, path: '/health' },
+      { module: SchemasModule, path: '/schemas' },
+      { module: CredentialDefinitionsModule, path: '/credential-definitions' },
+    ]),
   ],
 })
 export class Application {}
diff --git a/apps/schema-manager/src/common/__tests__/response-format.interceptor.spec.ts b/apps/schema-manager/src/common/__tests__/response-format.interceptor.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4584333346b681815cc4d42a36eb71dabff5688e
--- /dev/null
+++ b/apps/schema-manager/src/common/__tests__/response-format.interceptor.spec.ts
@@ -0,0 +1,49 @@
+import type { ExecutionContext } from '@nestjs/common';
+import type { TestingModule } from '@nestjs/testing';
+
+import { Test } from '@nestjs/testing';
+import { of } from 'rxjs';
+
+import { ResponseFormatInterceptor } from '../response-format.interceptor.js';
+
+describe('ResponseFormatInterceptor', () => {
+  let interceptor: ResponseFormatInterceptor;
+
+  beforeEach(async () => {
+    const module: TestingModule = await Test.createTestingModule({
+      providers: [ResponseFormatInterceptor],
+    }).compile();
+
+    interceptor = module.get<ResponseFormatInterceptor>(
+      ResponseFormatInterceptor,
+    );
+  });
+
+  it('should be defined', () => {
+    expect(interceptor).toBeDefined();
+    expect(interceptor).toBeInstanceOf(ResponseFormatInterceptor);
+  });
+
+  it('should intercept the request and format the response', (done) => {
+    const context: ExecutionContext = {
+      switchToHttp: () => ({
+        getResponse: () => ({
+          statusCode: 200,
+        }),
+      }),
+    } as ExecutionContext;
+    const next = {
+      handle: jest.fn().mockReturnValue(of('Hello World')),
+    };
+
+    const result = interceptor.intercept(context, next);
+
+    expect(result).toBeDefined();
+    expect(next.handle).toHaveBeenCalled();
+
+    result.subscribe((response) => {
+      expect(response).toEqual({ statusCode: 200, data: 'Hello World' });
+      done();
+    });
+  });
+});
diff --git a/apps/schema-manager/src/common/response-format.interceptor.ts b/apps/schema-manager/src/common/response-format.interceptor.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9d85a0ef39bf053fa894984ed985c20ceb9387e3
--- /dev/null
+++ b/apps/schema-manager/src/common/response-format.interceptor.ts
@@ -0,0 +1,28 @@
+import type {
+  CallHandler,
+  ExecutionContext,
+  NestInterceptor,
+} from '@nestjs/common';
+
+import { Injectable } from '@nestjs/common';
+import { map, type Observable } from 'rxjs';
+
+@Injectable()
+export class ResponseFormatInterceptor implements NestInterceptor {
+  public intercept(
+    context: ExecutionContext,
+    next: CallHandler,
+  ): Observable<unknown> {
+    const ctx = context.switchToHttp();
+    const response = ctx.getResponse();
+
+    return next.handle().pipe(
+      map((data) => {
+        return {
+          statusCode: response.statusCode,
+          data,
+        };
+      }),
+    );
+  }
+}
diff --git a/apps/schema-manager/src/health/health.controller.ts b/apps/schema-manager/src/health/health.controller.ts
index 9f2454eb869df9f7720c6e7bd1caa2ed4caef8d6..70092f2d18763ebb8a6e0fe42533b11237e44b21 100644
--- a/apps/schema-manager/src/health/health.controller.ts
+++ b/apps/schema-manager/src/health/health.controller.ts
@@ -8,7 +8,7 @@ import {
   HttpHealthIndicator,
 } from '@nestjs/terminus';
 
-@Controller('health')
+@Controller()
 export class HealthController {
   public constructor(
     private readonly config: ConfigService,
diff --git a/apps/schema-manager/src/interfaces/response.interface.ts b/apps/schema-manager/src/interfaces/response.interface.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2bb8cc79af6492844376ec49f557d124c0106d51
--- /dev/null
+++ b/apps/schema-manager/src/interfaces/response.interface.ts
@@ -0,0 +1,6 @@
+export interface Response<T = unknown> {
+  statusCode: number;
+  message: string;
+  data?: T;
+  error?: unknown;
+}