Re-Enabling Swagger Documentation for Intersection API#324
Conversation
There was a problem hiding this comment.
Pull request overview
This PR aims to restore Swagger/OpenAPI documentation for the Intersection API after Spring upgrades by updating the Springdoc dependency, ensuring the OpenAPI JSON can be rendered/serialized correctly, and preventing unintended Spring Data REST repository endpoints from being exposed.
Changes:
- Upgraded
springdoc-openapi-starter-webmvc-uito2.8.9. - Allowed unauthenticated access to Springdoc endpoints (
/v3/api-docs*,/swagger-ui*) in the security filter chain and adjusted MVC message converters to support Springdoc output types. - Disabled Spring Data REST export on a broad set of JPA repositories via
@RepositoryRestResource(exported = false).
Reviewed changes
Copilot reviewed 27 out of 27 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| services/intersection-api/api/pom.xml | Bumps Springdoc OpenAPI UI starter version to restore compatibility with the current Spring stack. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/keycloak/config/KeycloakSecurityConfig.java | Permits unauthenticated access to OpenAPI/Swagger UI endpoints. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/WebConfig.java | Adjusts MVC message converters to support Springdoc/OpenAPI serialization. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/UserRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/UserOrganizationRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/UserEmailNotificationRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/SnmpProtocolRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/SnmpMsgfwdConfigRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/SnmpCredentialRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/ScmsHealthRepository.java | Disables Spring Data REST export and reformats query documentation. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RsuRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RsuOrganizationRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RsuOptionRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RsuModelRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RsuIntersectionRepository.java | Disables Spring Data REST export and removes extra whitespace in the interface. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RsuCredentialRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/RoleRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/PingRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/OrganizationRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/MaxRetryLimitReachedInstanceRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/ManufacturerRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/IntersectionRepository.java | Disables Spring Data REST export and reformats repository method documentation. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/IntersectionOrganizationRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/FirmwareUpgradeRuleRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/EmailTypeRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/main/java/us/dot/its/jpo/ode/api/repositories/ConsecutiveFirmwareUpgradeFailureRepository.java | Disables Spring Data REST export for the repository. |
| services/intersection-api/api/src/test/java/us/dot/its/jpo/ode/api/services/AdminIntersectionServiceTest.java | Refactors/normalizes test formatting and keeps DB cleanup + auth context helpers for integration tests. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Michael7371
left a comment
There was a problem hiding this comment.
Verified /v3/api-docs returns valid OpenAPI 3.1.0 and controller routes; no obvious JPA REST repo paths in the spec. Swagger fix LGTM.
Two things before merge:
/v3/api-docsis reachable without auth; is this intended?- Rebase onto the latest develop branch and drop the dead
ManageSubscriptionsBody.
Michael7371
left a comment
There was a problem hiding this comment.
LGTM! Not sure if it is intended to allow access to Swagger docs without auth, but I don't have a problem with it.
PR Details
Description
Resolving multiple bugs blocking automatic swagger documentation:
How Has This Been Tested?
After running the Intersection API through docker or java, open the swagger docs page: http://localhost:8089/swagger-ui/index.html
Types of changes
Checklist: