From 6c0d4b00e9e9fd05695096ad4929c23cd7324948 Mon Sep 17 00:00:00 2001 From: Dohun Kim Date: Tue, 9 Dec 2025 17:55:39 +0900 Subject: [PATCH 1/2] docs(swagger): add grouped OpenAPI configurations for CMS, site, redot, admin, and all APIs --- .../global/config/SwaggerConfig.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/main/java/redot/redot_server/global/config/SwaggerConfig.java b/src/main/java/redot/redot_server/global/config/SwaggerConfig.java index 56b1c77..449c3f7 100644 --- a/src/main/java/redot/redot_server/global/config/SwaggerConfig.java +++ b/src/main/java/redot/redot_server/global/config/SwaggerConfig.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.servers.Server; import java.util.List; +import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @@ -27,4 +28,50 @@ public OpenAPI customOpenAPI() { .description("Redot Server API Documentation")) .servers(List.of(devServer, localServer)); } + + @Bean + public GroupedOpenApi cmsApi() { + return GroupedOpenApi.builder() + .group("cms") + .displayName("CMS API") + .pathsToMatch("/api/v1/app/cms/**", "/api/v1/auth/app/cms/**") + .build(); + } + + @Bean + public GroupedOpenApi siteApi() { + return GroupedOpenApi.builder() + .group("site") + .displayName("Site/Public API") + .pathsToMatch("/api/v1/app/site/**", "/api/v1/domain/**") + .build(); + } + + @Bean + public GroupedOpenApi redotApi() { + return GroupedOpenApi.builder() + .group("redot") + .displayName("Redot API") + .pathsToMatch("/api/v1/app/**", "/api/v1/redot/**", "/api/v1/auth/redot/member/**", "/api/v1/auth/email-verification/**") + .pathsToExclude("/api/v1/app/cms/**", "/api/v1/app/site/**", "/api/v1/redot/admin/**", "/api/v1/auth/app/cms/**") + .build(); + } + + @Bean + public GroupedOpenApi adminApi() { + return GroupedOpenApi.builder() + .group("admin") + .displayName("Admin API") + .pathsToMatch("/api/v1/redot/admin/**", "/api/v1/auth/redot/admin/**") + .build(); + } + + @Bean + public GroupedOpenApi allApi() { + return GroupedOpenApi.builder() + .group("all") + .displayName("All APIs") + .pathsToMatch("/**") + .build(); + } } From 3c820c8cd1b7d06e9b840b31bd516d3d2f3541ef Mon Sep 17 00:00:00 2001 From: Dohun Kim Date: Wed, 10 Dec 2025 15:41:23 +0900 Subject: [PATCH 2/2] feat(app-version): include isProtected attribute in AppVersionPage summaries --- .../page/dto/response/AppVersionPageSummaryResponse.java | 3 ++- .../dto/AppVersionPageSummaryWithVersionResponse.java | 5 +++-- .../site/page/repository/AppVersionPageRepository.java | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/redot/redot_server/domain/cms/site/page/dto/response/AppVersionPageSummaryResponse.java b/src/main/java/redot/redot_server/domain/cms/site/page/dto/response/AppVersionPageSummaryResponse.java index cb74528..b6d17c0 100644 --- a/src/main/java/redot/redot_server/domain/cms/site/page/dto/response/AppVersionPageSummaryResponse.java +++ b/src/main/java/redot/redot_server/domain/cms/site/page/dto/response/AppVersionPageSummaryResponse.java @@ -4,6 +4,7 @@ public record AppVersionPageSummaryResponse( Long id, String path, String title, - String description + String description, + boolean isProtected ) { } diff --git a/src/main/java/redot/redot_server/domain/cms/site/page/service/dto/AppVersionPageSummaryWithVersionResponse.java b/src/main/java/redot/redot_server/domain/cms/site/page/service/dto/AppVersionPageSummaryWithVersionResponse.java index baae05e..41ecc8f 100644 --- a/src/main/java/redot/redot_server/domain/cms/site/page/service/dto/AppVersionPageSummaryWithVersionResponse.java +++ b/src/main/java/redot/redot_server/domain/cms/site/page/service/dto/AppVersionPageSummaryWithVersionResponse.java @@ -7,10 +7,11 @@ public record AppVersionPageSummaryWithVersionResponse( Long id, String path, String title, - String description + String description, + boolean isProtected ) { public AppVersionPageSummaryResponse toSummary() { - return new AppVersionPageSummaryResponse(id, path, title, description); + return new AppVersionPageSummaryResponse(id, path, title, description, isProtected); } } diff --git a/src/main/java/redot/redot_server/domain/site/page/repository/AppVersionPageRepository.java b/src/main/java/redot/redot_server/domain/site/page/repository/AppVersionPageRepository.java index dcdbc01..e7cb619 100644 --- a/src/main/java/redot/redot_server/domain/site/page/repository/AppVersionPageRepository.java +++ b/src/main/java/redot/redot_server/domain/site/page/repository/AppVersionPageRepository.java @@ -16,14 +16,14 @@ public interface AppVersionPageRepository extends JpaRepository findAllByAppVersionId(Long appVersionId); @Query("select new redot.redot_server.domain.cms.site.page.dto.response.AppVersionPageSummaryResponse(" + - " ap.id, ap.path, ap.title, ap.description)" + + " ap.id, ap.path, ap.title, ap.description, ap.isProtected)" + " from AppVersionPage avp" + " join avp.appPage ap" + " where avp.appVersion.id = :appVersionId") List findSummariesByAppVersionId(@Param("appVersionId") Long appVersionId); @Query("select new redot.redot_server.domain.cms.site.page.service.dto.AppVersionPageSummaryWithVersionResponse(" + - " avp.appVersion.id, ap.id, ap.path, ap.title, ap.description)" + + " avp.appVersion.id, ap.id, ap.path, ap.title, ap.description, ap.isProtected)" + " from AppVersionPage avp" + " join avp.appPage ap" + " where avp.appVersion.id in :appVersionIds")