diff --git a/src/app.module.ts b/src/app.module.ts
index 9bb9a151c99a1be22af15509661b8fec3ecc04b9..25728d3124a279326173b50c046e2cb22dc0ac8a 100644
--- a/src/app.module.ts
+++ b/src/app.module.ts
@@ -23,6 +23,7 @@ import { KonfigurasiModule } from "./konfigurasi/konfigurasi.module";
 import { Konfigurasi } from "./entities/konfigurasi.entity";
 import { DashboardModule } from "./dashboard/dashboard.module";
 import { BerkasSidsem } from "./entities/berkasSidsem.entity";
+import { DosenPengujiModule } from "./dosen-penguji/dosen-penguji.module";
 
 @Module({
   imports: [
@@ -58,6 +59,7 @@ import { BerkasSidsem } from "./entities/berkasSidsem.entity";
     RegistrasiSidsemModule,
     PenggunaModule,
     KonfigurasiModule,
+    DosenPengujiModule,
   ],
   controllers: [AppController],
   providers: [AppService],
diff --git a/src/dosen-bimbingan/dosen-bimbingan.dto.ts b/src/dosen-bimbingan/dosen-bimbingan.dto.ts
index 16e493a95a99c7f62c02cf894b7386b3e5974383..47a532f830f4d2f30afeff37c5e57b5a6a3e4b82 100644
--- a/src/dosen-bimbingan/dosen-bimbingan.dto.ts
+++ b/src/dosen-bimbingan/dosen-bimbingan.dto.ts
@@ -1,15 +1,6 @@
-import { IsOptional } from "@nestjs/class-validator";
-import { ApiPropertyOptional, PickType } from "@nestjs/swagger";
-import { IsUUID } from "class-validator";
+import { PickType } from "@nestjs/swagger";
 import { Pengguna } from "src/entities/pengguna.entity";
 
-export class DosbimOptQueryDto {
-  @ApiPropertyOptional({ example: "550e8400-e29b-41d4-a716-446655440000" })
-  @IsOptional()
-  @IsUUID()
-  regId?: string;
-}
-
 export class GetDosbimResDto extends PickType(Pengguna, [
   "id",
   "email",
diff --git a/src/dosen-penguji/dosen-penguji.controller.ts b/src/dosen-penguji/dosen-penguji.controller.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d50cb97c330b731985268617b2e50fe6087c7066
--- /dev/null
+++ b/src/dosen-penguji/dosen-penguji.controller.ts
@@ -0,0 +1,33 @@
+import { Controller, Get, UseGuards } from "@nestjs/common";
+import {
+  ApiBearerAuth,
+  ApiCookieAuth,
+  ApiOkResponse,
+  ApiOperation,
+  ApiTags,
+} from "@nestjs/swagger";
+import { RoleEnum } from "src/entities/pengguna.entity";
+import { CustomAuthGuard } from "src/middlewares/custom-auth.guard";
+import { Roles } from "src/middlewares/roles.decorator";
+import { RolesGuard } from "src/middlewares/roles.guard";
+import { GetDosujiResDto } from "./dosen-penguji.dto";
+import { DosenPengujiService } from "./dosen-penguji.service";
+
+@ApiTags("Dosen Penguji")
+@ApiCookieAuth()
+@ApiBearerAuth()
+@Controller("dosen-penguji")
+@UseGuards(CustomAuthGuard, RolesGuard)
+@Roles(RoleEnum.ADMIN, RoleEnum.S2_TIM_TESIS)
+export class DosenPengujiController {
+  constructor(private readonly dosujiService: DosenPengujiService) {}
+
+  @ApiOkResponse({ type: [GetDosujiResDto] })
+  @ApiOperation({
+    summary: "Get all available dosen penguji. Roles: ADMIN, S2_TIM_TESIS",
+  })
+  @Get()
+  async get() {
+    return await this.dosujiService.getAll();
+  }
+}
diff --git a/src/dosen-penguji/dosen-penguji.dto.ts b/src/dosen-penguji/dosen-penguji.dto.ts
new file mode 100644
index 0000000000000000000000000000000000000000..99edd73b7e11ddf929d78756346cdf4efd0913fb
--- /dev/null
+++ b/src/dosen-penguji/dosen-penguji.dto.ts
@@ -0,0 +1,9 @@
+import { PickType } from "@nestjs/swagger";
+import { Pengguna } from "src/entities/pengguna.entity";
+
+export class GetDosujiResDto extends PickType(Pengguna, [
+  "id",
+  "email",
+  "nama",
+  "keahlian",
+] as const) {}
diff --git a/src/dosen-penguji/dosen-penguji.module.ts b/src/dosen-penguji/dosen-penguji.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1c64d3a567c20ecd9f1e949e6f99d7e998db7d13
--- /dev/null
+++ b/src/dosen-penguji/dosen-penguji.module.ts
@@ -0,0 +1,14 @@
+import { Module } from "@nestjs/common";
+import { AuthModule } from "src/auth/auth.module";
+import { TypeOrmModule } from "@nestjs/typeorm";
+import { Pengguna } from "src/entities/pengguna.entity";
+import { CustomStrategy } from "src/middlewares/custom.strategy";
+import { DosenPengujiController } from "./dosen-penguji.controller";
+import { DosenPengujiService } from "./dosen-penguji.service";
+
+@Module({
+  imports: [TypeOrmModule.forFeature([Pengguna]), AuthModule],
+  controllers: [DosenPengujiController],
+  providers: [DosenPengujiService, CustomStrategy],
+})
+export class DosenPengujiModule {}
diff --git a/src/dosen-penguji/dosen-penguji.service.ts b/src/dosen-penguji/dosen-penguji.service.ts
new file mode 100644
index 0000000000000000000000000000000000000000..712b5ced205297b509b4d23820557969a7f51888
--- /dev/null
+++ b/src/dosen-penguji/dosen-penguji.service.ts
@@ -0,0 +1,26 @@
+import { Injectable } from "@nestjs/common";
+import { InjectRepository } from "@nestjs/typeorm";
+import { Pengguna, RoleEnum } from "src/entities/pengguna.entity";
+import { ArrayContains, Repository } from "typeorm";
+
+@Injectable()
+export class DosenPengujiService {
+  constructor(
+    @InjectRepository(Pengguna)
+    private penggunaRepo: Repository<Pengguna>,
+  ) {}
+
+  async getAll() {
+    return await this.penggunaRepo.find({
+      select: {
+        id: true,
+        nama: true,
+        email: true,
+        keahlian: true,
+      },
+      where: {
+        roles: ArrayContains([RoleEnum.S2_PENGUJI]),
+      },
+    });
+  }
+}
diff --git a/src/main.ts b/src/main.ts
index 8f39d1c33675cd4f871fe6271f9bfbd301979f3a..05e2e26f2ea78343514d74aec6917e2a357dad8f 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -25,8 +25,10 @@ async function bootstrap() {
     .addTag("Bimbingan")
     .addTag("Dashboard")
     .addTag("Dosen Bimbingan")
+    .addTag("Dosen Penguji")
     .addTag("Konfigurasi")
     .addTag("Registrasi Tesis")
+    .addTag("Registrasi Sidang Seminar")
     .addCookieAuth(process.env.COOKIE_NAME)
     .addBearerAuth()
     .build();