# Versions and setup | Component | Version | Source of truth | |---|---|---| | Spring Boot | 4.1.1 | `pom.xml` parent | | Spring Framework | 7.0.9 | resolved transitively by the Boot 4.1.1 BOM | | springdoc-openapi | 3.1.1 | `pom.xml` property `springdoc.version`; confirmed as the current ``/`` against Maven Central's `springdoc-openapi-starter-webmvc-ui/maven-metadata.xml` (`lastUpdated` 2026-09-06T16:37:40Z) | | JDK | 25 (Temurin 25.0.4.1+1) | `java -version` on the build host | Single dependency beyond the web starter: ```xml org.springdoc springdoc-openapi-starter-webmvc-ui 3.1.1 ``` No other springdoc configuration is required to get `/v3/api-docs` and `/swagger-ui.html` — both are enabled by default (springdoc logs a `WARN` about this at startup, pointing at `springdoc.api-docs.enabled=false` / `springdoc.swagger-ui.enabled=false` for production). ## The versioning setup this module builds on [`WebConfig`](../src/main/java/com/ankurm/openapiversioning/config/WebConfig.java) is the *exact* `ApiVersionConfigurer` setup from the companion project for [Spring Framework 7 API Versioning: The Complete Guide](https://ankurm.com/spring-framework-7-api-versioning-guide/): header-based resolution (`API-Version`), `setVersionRequired(false)`, `setDefaultVersion("1")`. That article already verified the versioning *mechanics* — baseline handlers, the supported-versions allow-list, what an unversioned request resolves to. This module deliberately does not re-litigate any of that; it takes the mechanics as given and asks a narrower question: once you add springdoc-openapi on top, what actually ends up in the generated spec? [`AccountController`](../src/main/java/com/ankurm/openapiversioning/web/AccountController.java) mirrors that article's three-handler shape (`version = "1"`, `"1.1+"`, `"2"`), with one addition: an `AccountStatus` enum on the v2 response, so the OpenAPI output actually exercises enum handling, not just flat string fields.