diff --git a/src/cmd/__debug_bin1448138251 b/src/cmd/__debug_bin1448138251
new file mode 100755
index 0000000000000000000000000000000000000000..19e0187a543f4836ab706a97b3f2976d506548c1
Binary files /dev/null and b/src/cmd/__debug_bin1448138251 differ
diff --git a/src/handler/handler.go b/src/handler/handler.go
index 1b350781a5a56150a12318c748252e2a873f3cf0..66939c2f2fd73055acca2584a75504c4306a5623 100644
--- a/src/handler/handler.go
+++ b/src/handler/handler.go
@@ -45,6 +45,7 @@ type Service struct {
 	DosbingBimbinganLogHandler        *bimbinganLogTransport.DosbingimbinganLogHandler
 	TIMTASchedulingHandler            *schedulingTransport.TIMTASchedulingHandler
 	MahasiswaPendaftaranSidSemHandler *pendaftaranSidSemTransport.MahasiswaPendaftaranSidSemHandler
+	TIMTAPendaftaranSidSemHandler		*pendaftaranSidSemTransport.TIMTAPendaftaranSidSemHandler
 }
 
 func MakeHandler() *Service {
@@ -104,6 +105,11 @@ func MakeHandler() *Service {
 		DBWrite: dbWrite,
 	})
 
+	TIMTAPendaftaranSidSemHandler := pendaftaranSidSemTransport.NewTIMTAPendaftaranSidSemHandler(pendaftaranSidSemConfig.PendaftaranSidSemTransportConfig{
+		DBRead: dbRead,
+		DBWrite: dbWrite,
+	})
+
 	DosbingBimbinganLogHandler := bimbinganLogTransport.NewDosbingBimginganLogHandler(bimbinganLogConfig.BimbinganLogTransportConfig{
 		DBWrite: dbWrite,
 		DBRead:  dbRead,
@@ -136,5 +142,6 @@ func MakeHandler() *Service {
 		AdminDashboardTimTugasHandler:     AdminDashboardTimTugasHandler,
 		TIMTASchedulingHandler:            TIMTASchedulingHandlerHandler,
 		MahasiswaPendaftaranSidSemHandler: MahasiswaPendaftaranSidSemHandler,
+		TIMTAPendaftaranSidSemHandler:  	TIMTAPendaftaranSidSemHandler,
 	}
 }
diff --git a/src/handler/server.go b/src/handler/server.go
index 099b50388b1428085012413787eff3b0d1416b2f..0e4a1f73b8a243465f2b5783df5f0f248c698638 100644
--- a/src/handler/server.go
+++ b/src/handler/server.go
@@ -59,8 +59,9 @@ func (s *Service) InitializeRoutes() *echo.Echo {
 	s.DosbingDashboardHandler.MountDosbing(dosbingGroup)
 
 	TIMTAGroup := e.Group("api/TIMTA")
-	TIMTAGroup.Use(middleware.Validator("TIM_TA"))
+	TIMTAGroup.Use(middleware.Validator("S1_TIM_TA"))
 	s.TIMTASchedulingHandler.MountTIMTA(TIMTAGroup)
+	s.TIMTAPendaftaranSidSemHandler.MountTIMTA(TIMTAGroup)
 	return e
 
 }
diff --git a/src/middleware/validator.go b/src/middleware/validator.go
index 629a505f4c48ffd7e849d67a0e3b534d34213ddd..41caab8b8603d497d599f3a469a7eaf89abf8254 100644
--- a/src/middleware/validator.go
+++ b/src/middleware/validator.go
@@ -1,6 +1,7 @@
 package middleware
 
 import (
+	"encoding/json"
 	"net/http"
 	"os"
 
@@ -8,8 +9,6 @@ import (
 	"gitlab.informatika.org/k-01-11/graduit-be/src/utils"
 )
 
-// masih mentah baru raba2
-
 func Validator(expectedRole string) echo.MiddlewareFunc {
 	return func(next echo.HandlerFunc) echo.HandlerFunc {
 		return func(c echo.Context) error {
@@ -37,10 +36,21 @@ func Validator(expectedRole string) echo.MiddlewareFunc {
 			}
 			defer resp.Body.Close()
 
+			var payload utils.Payload
+			if err := json.NewDecoder(resp.Body).Decode(&payload); err != nil {
+				return c.JSON(http.StatusInternalServerError, utils.ResponseDetailOutput(false, http.StatusInternalServerError, "Failed to decode response body", err))
+			}
+
+			if payload.Roles[0] != expectedRole {
+				return c.JSON(http.StatusForbidden, utils.ResponseDetailOutput(false, http.StatusForbidden, "Forbidden", err))
+			}
+
 			if resp.StatusCode != http.StatusOK {
 				return c.JSON(resp.StatusCode, utils.ResponseDetailOutput(false, resp.StatusCode, "Unauthorized", resp.Body))
 			}
 
+			c.Set("authPayload", payload)
+
 			return next(c)
 		}
 	}
diff --git a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
index 902eb66130babd5ca115a6c3b62a189cfb174c89..b9dcb561a8d422b3b884f5248f9f279d682ad5ac 100644
--- a/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/repository/pendaftaran_sidsem.go
@@ -90,6 +90,46 @@ func (repo *PendaftaranSidSemRepo) GetPendaftaranByPeriode(idPeriode string, off
 	return dataJadwal, nil
 }
 
+func (repo *PendaftaranSidSemRepo) GetPendaftaran(offset, size int) (output []entity.PendaftaranSidSemRequest, err error) {
+	var pendaftaransidsem []models.PendaftaranSidSem
+	var pendaftaranTA models.PendaftaranTA
+	var mahasiswa models.Pengguna
+	var dataJadwal []entity.PendaftaranSidSemRequest
+	result := repo.DBRead.Limit(size).Offset(offset).Find(&pendaftaransidsem)
+
+	for _, jadwal := range pendaftaransidsem {
+		print(jadwal.ID)
+	}
+	for _, jadwal := range pendaftaransidsem {
+		res := repo.DBRead.Where("id = ?", jadwal.PendaftaranTAID).Limit(1).Find(&pendaftaranTA)
+		if res.Error != nil {
+			return nil, res.Error
+		}
+
+		res = repo.DBRead.Where("id = ?", pendaftaranTA.IdMahasiswa).Find(&mahasiswa)
+		if res.Error != nil {
+			return nil, res.Error
+		}
+
+		data := entity.PendaftaranSidSemRequest{
+			ID:           jadwal.ID,
+			Nim:          mahasiswa.NIM,
+			Nama:         mahasiswa.Nama,
+			WaktuMulai:   jadwal.WaktuMulai,
+			WaktuSelesai: jadwal.WaktuSelesai,
+			Tipe:         jadwal.Tipe,
+			Link:         jadwal.Link,
+		}
+
+		dataJadwal = append(dataJadwal, data)
+
+	}
+	if result.Error != nil {
+		return nil, err
+	}
+	return dataJadwal, nil
+}
+
 func (repo *PendaftaranSidSemRepo) GetPendaftaranSeminarById(id string) (output entity.SeminarPendaftaranSidSemRequest, err error) {
 	var pendaftaransem models.PendaftaranSidSem
 	var pendaftaranTA models.PendaftaranTA
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
index c9c75dbeb1c6a4e481a828cbfd4ff8426db0b5c2..554c8cada41f114e316500bd09eeb39bec38228b 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/pendaftaran_sidsem.go
@@ -19,6 +19,7 @@ type PendaftaranSidSemUsecase interface {
 	EditLulus(input entity.EditLulusRequest) (models.PendaftaranSidSem, error)
 	EditDitolak(input entity.EditDitolakRequest) (models.PendaftaranSidSem, error)
 	GetPlaceholders(idMahasiswa string) (entity.Placeholders, error)
+	GetPendaftaran(offset, size int) (output []entity.PendaftaranSidSemRequest, err error)
 }
 
 type PendaftaranSidSemUc struct {
@@ -61,6 +62,10 @@ func (uc *PendaftaranSidSemUc) GetPendaftaranByPeriode(idPeriode string, offset,
 	return uc.pendaftaransidsemrepo.GetPendaftaranByPeriode(idPeriode, offset, size)
 }
 
+func (uc *PendaftaranSidSemUc) GetPendaftaran(offset, size int) (output []entity.PendaftaranSidSemRequest, err error) {
+	return uc.pendaftaransidsemrepo.GetPendaftaran(offset, size)
+}
+
 func (uc *PendaftaranSidSemUc) GetPendaftaranSidangById(id string) (entity.SidangPendaftaranSidSemRequest, error) {
 	return uc.pendaftaransidsemrepo.GetPendaftaranSidangById(id)
 }
diff --git a/src/module/pendaftaran_sidsem/internal/usecase/repository.go b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
index 95fb5e1d33096e49d57a76d44cc6293e439e6d63..363d4c8283b74d088f79b08e902eba153cbecbb5 100644
--- a/src/module/pendaftaran_sidsem/internal/usecase/repository.go
+++ b/src/module/pendaftaran_sidsem/internal/usecase/repository.go
@@ -20,4 +20,5 @@ type PendaftaranSidSemRepository interface {
 	GetNameUntilTopikPlaceholders(idMahasiswa string) (entity.NameTopik, error)
 	GetDosbingNamePlaceholder(idMahasiswa string) (entity.DosbingName, error)
 	GetPendaftaranTaIdByMahasiswa(idMahasiswa string) (string, error)
+	GetPendaftaran(offset, size int) (output []entity.PendaftaranSidSemRequest, err error)
 }
diff --git a/src/module/pendaftaran_sidsem/transport/admin_handler.go b/src/module/pendaftaran_sidsem/transport/admin_handler.go
index ead65b8b597f09f2096fd6cf6e18948111219cd9..4e8c9067e936177d694d4c4b3b24e9aa71021b1f 100644
--- a/src/module/pendaftaran_sidsem/transport/admin_handler.go
+++ b/src/module/pendaftaran_sidsem/transport/admin_handler.go
@@ -27,7 +27,7 @@ func NewAdminJadwalSeminarHandler(cfg config.PendaftaranSidSemTransportConfig) *
 }
 
 func (t *AdminPendaftaranSidSemHandler) MountAdmin(group *echo.Group) {
-	group.GET("/pendaftaran-sidsem", t.GetPendaftaranByPeriode)
+	group.GET("/pendaftaran-sidsem-periode", t.GetPendaftaranByPeriode)
 	group.DELETE("/pendaftaran-sidsem", t.DeletePendaftaran)
 	group.GET("/pendaftaran-sidang", t.GetPendaftaranSidangById)
 	group.GET("/pendaftaran-seminar", t.GetPendaftaranSeminarById)
diff --git a/src/module/pendaftaran_sidsem/transport/timta_handler.go b/src/module/pendaftaran_sidsem/transport/timta_handler.go
new file mode 100644
index 0000000000000000000000000000000000000000..ce08ff7db6bf12b756ea668eb5df8ea128d56bf5
--- /dev/null
+++ b/src/module/pendaftaran_sidsem/transport/timta_handler.go
@@ -0,0 +1,51 @@
+package transport
+
+import (
+	"net/http"
+	"strconv"
+
+	"github.com/labstack/echo/v4"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/pendaftaran_sidsem/config"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/pendaftaran_sidsem/internal/repository"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/module/pendaftaran_sidsem/internal/usecase"
+	"gitlab.informatika.org/k-01-11/graduit-be/src/utils"
+)
+
+type TIMTAPendaftaranSidSemHandler struct {
+	pendaftaransidsemUsecase usecase.PendaftaranSidSemUsecase
+}
+
+func NewTIMTAPendaftaranSidSemHandler(cfg config.PendaftaranSidSemTransportConfig) *TIMTAPendaftaranSidSemHandler {
+	pendaftaransidsemRepository := repository.NewPendaftaranSidSemRepository(cfg.DBWrite, cfg.DBRead)
+	pendaftaransidsemUsecase := usecase.NewPendaftaranSidSemUseCase(pendaftaransidsemRepository)
+
+	return &TIMTAPendaftaranSidSemHandler{
+		pendaftaransidsemUsecase: pendaftaransidsemUsecase,
+	}
+
+}
+
+func (t *TIMTAPendaftaranSidSemHandler) MountTIMTA(group *echo.Group) {
+	group.GET("/pendaftaran-sidsem", t.GetPendaftaran)
+}
+
+func (t *TIMTAPendaftaranSidSemHandler) GetPendaftaran(c echo.Context) error {
+	sizeStr := c.QueryParam("limit")
+	offsetStr := c.QueryParam("offset")
+
+	size, err := strconv.Atoi(sizeStr)
+	if err != nil {
+		size = 10
+	}
+	offset, err := strconv.Atoi(offsetStr)
+	if err != nil {
+		offset = 0
+	}
+	jadwal, err := t.pendaftaransidsemUsecase.GetPendaftaran(size, offset)
+	if err != nil {
+		return c.JSON(http.StatusBadRequest, utils.ResponseDetailOutput(false, http.StatusBadRequest, err.Error(), nil))
+	}
+
+	return c.JSON(http.StatusOK, utils.ResponseDetailOutput(true, http.StatusOK, "Pendaftaran successfully retreived", jadwal))
+}
+
diff --git a/src/utils/helper.go b/src/utils/helper.go
index 0ae531c46878955dcef292d40b33eda556c50401..9ff781904c495e409efcd9a58cb18ec8e7e5a909 100644
--- a/src/utils/helper.go
+++ b/src/utils/helper.go
@@ -18,13 +18,22 @@ type ResponseDetail struct {
 }
 
 type PageLimitSearchID struct {
-	Page int
-	Limit int
-	Search string
-	ID string
+	Page    int
+	Limit   int
+	Search  string
+	ID      string
 	Periode string
 }
 
+type Payload struct {
+	ID     string
+	Nama   string
+	Email  string
+	NIM    string
+	Roles  []string
+	Kontak string
+}
+
 func ResponseDetailOutput(success bool, code int, message string, data interface{}) ResponseDetail {
 	res := ResponseDetail{
 		Success: success,
@@ -107,4 +116,4 @@ func GetPageLimitSearchID(urlValues url.Values) (output PageLimitSearchID, err e
 	}
 
 	return *param, nil
-}
\ No newline at end of file
+}