You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(deps): update dependency org.springdoc:springdoc-openapi-starter-webmvc-ui to v3 - #637
#3370 – A ParameterCustomizer can read the type-use annotations of a parameter, including the ones declared on the value wrapped in an Optional, such as Optional<@MyAnnotation Foo>
#3382 – Mark the Java properties annotated with @Nullable (JSpecify, Spring, JSR-305) as nullable in their schema, including $ref and oneOf properties. Opt-in with springdoc.model-converters.java-nullable-property-customizer.enabled=true
#3390 – Add springdoc.model-converters.polymorphic-converter.one-of-as-ref to emit the polymorphic oneOf unions as reusable component schemas, named after the parent schema with the suffix set by springdoc.model-converters.polymorphic-converter.one-of-ref-suffix (Variant by default)
#3388 – Register the MCP tools with a McpStatelessSyncServer, for the STATELESS protocol
Changed
The MCP dashboard no longer pre-fills the OAuth2 token endpoint, client id and client secret. The form shows hints instead, and warns when the token endpoint is not HTTPS
#3354 – The default API version is only listed in the header or query parameter of the operations that serve it: a handler method mapped to it, or one without a version
#3360 – The properties of Spring Data PagedModel and its PageMetadata are now marked as required, as they are always serialized
#3361 – The amount and currency properties of MonetaryAmount are now marked as required
#3359 – Upgrade Scalar to version 0.6.83. The first tag is now open by default, and the links to models changed from #model/name to #models/Name
#3383 – Upgrade Spring AI to version 2.0.1. The MCP SDK version is now the one required by Spring AI
Upgrade spring-boot to version 4.1.2
Upgrade swagger-ui to version 5.34.0
Upgrade spring-cloud-function to version 5.0.5
Use the spring-security-oauth2-authorization-server version managed by Spring Boot (7.1.2) instead of 2.0.0-M2
Fixed
#3352 – A @ResponseStatus on a controller class is now applied to the responses of its operations
#3355 – An injected WebSession parameter is no longer documented as a query parameter in WebFlux applications
#3354 – /v3/api-docs no longer fails when an API version parameter declares @Schema(allowableValues)
#3364 – The application no longer fails to start when Spring HATEOAS is on the classpath without a LinkRelationProvider bean
#3368 – A WebAsyncTask return type is now unwrapped, so its response is described by its result type
#3377 – A JSpecify @Nullable on a controller method parameter now makes its schema nullable
#3381 – A nullable Kotlin property described by a oneOf schema, such as a sealed class, is now documented as nullable
#3387 – Scalar's own integration works again with the Swagger UI and API-only starters: only the Springdoc Scalar starters replace it
#3373 – springdoc no longer lifts Jackson 2 above the version managed by Spring Boot in Gradle builds
GHSA-c925-vm88-mpp9 – Scalar starters trust client-supplied forwarded headers and render from a shared mutable bean
CVE-2026-75838 – Cross-site scripting in the DOMPurify bundled with swagger-ui, addressed by upgrading swagger-ui to 5.32.14
Added
#3340 – Describe JsonNullable values without their Java wrapper
#3325 – Manage the swagger artifacts in springdoc-openapi-bom, so that modules holding only the annotations stay in lockstep
#3321 – Add springdoc.login-endpoint.username-example and springdoc.login-endpoint.password-example to document the Spring Security login endpoint
Changed
MCP is now opt-in. Set springdoc.ai.mcp.enabled=true, and springdoc.ai.mcp.dashboard-enabled=true for the dashboard
The Scalar starters no longer register forwarded-header handling. Set server.forward-headers-strategy=framework (or native) behind a trusted proxy
Add springdoc.cache.max-entries (default 100) to bound the per-locale OpenAPI cache
Add springdoc.ai.mcp.audit.redact (default true) to mask secrets in MCP audit events
Document that the MCP approval flow is a confirmation step, not an authorization control
Document the security policy and the release versioning scheme
#3351 – java.time.Duration, LocalTime and OffsetTime are now resolved by swagger-core instead of being forced to a bare string, so they carry a format: duration, time-local and time respectively (partial-time for LocalTime after PrimitiveType.enablePartialTime())
A property whose type only implements Set indirectly (LinkedHashSet, TreeSet, …) is now described with uniqueItems: true, following swagger-api/swagger-core#5265
Upgrade swagger-core to version 2.2.55
Upgrade swagger-ui to version 5.32.14
Fixed
#3328, #3337 – /v3/api-docs fails with a NullPointerException when spring-hateoas is on the classpath without HateoasProperties
#3314 – Json Processing Exception occurred is logged for every constrained parameter whose schema is not a JsonSchema
#3317 – An injected HttpHeaders parameter is described as a schema
#3332 – The properties a Kotlin entity inherits from an @Embeddable are missing from the Spring Data REST schemas
#3320 – @Order and Ordered ignored when applying customizers
#3319 – A Page nested in another schema is not replaced by PagedModel
#3313 – Springdoc auto-configurations rely on unspecified auto-configuration ordering
#3331 – Validation annotations declared inside Optional parameters are dropped
#3322 – Validation annotations on a container's type argument leak between parameters
#3315 – An OAS 3.1 JsonSchema cannot be cloned through JSON
#3300 – TYPE_USE annotations on @ParameterObject fields are not passed along
#3341 – Stabilize Spring Data Sort and Pageable schema property order
#3338 – Kotlin nullability interpretation of the Any? type
#3136 – A Spring Data REST association to a non-exported entity expands its @EmbeddedId and @MapsId fields recursively in the response schemas
The Spring Data REST response post-processing rewrote an association property in place, so the …Response refs could leak into the schema shared with the request body representation
Spring Boot 3.5.x line (built on Spring Boot 3.5.16).
⚠️ Changes you may notice
Newly required properties (#3360, #3361): the PagedModel / PageMetadata properties and the amount / currency properties of MonetaryAmount are now marked as required, as they are always serialized. Generated clients will see them as non-nullable.
Scalar 0.6 (#3359): upgraded to 0.6.83. The first tag is now open by default, and model links changed from #model/name to #models/Name.
Scalar's standalone integration (#3387): with the Swagger UI or API-only starters, Scalar's own auto-configuration is no longer disabled by springdoc. If you have com.scalar.maven on the classpath and don't want it, set scalar.enabled=false.
New
Opt-in nullability for Java models (#3382): springdoc.model-converters.java-nullable-property-customizer.enabled=true marks properties annotated with @Nullable (JSpecify, Spring, JSR-305) as nullable, including $ref and oneOf properties, without changing shared components.
Polymorphic oneOf as reusable components (#3390): springdoc.model-converters.polymorphic-converter.one-of-as-ref=true, with the name suffix set by springdoc.model-converters.polymorphic-converter.one-of-ref-suffix (Variant by default).
ParameterCustomizer can read type-use annotations, including inside Optional<@MyAnnotation Foo> (#3370).
Fixed
@ResponseStatus on a controller class is applied to its operations (#3352).
An injected WebSession is no longer documented as a query parameter in WebFlux (#3355).
The application no longer fails to start with Spring HATEOAS on the classpath but no LinkRelationProvider bean (#3364).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bugSomething isn't workingdependenciesPull requests that update a dependency file
0 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.9.1→3.2.0Warning
Some dependencies could not be looked up. Check the warning logs for more information.
Release Notes
springdoc/springdoc-openapi (org.springdoc:springdoc-openapi-starter-webmvc-ui)
v3.2.0Compare Source
Added
ParameterCustomizercan read the type-use annotations of a parameter, including the ones declared on the value wrapped in anOptional, such asOptional<@MyAnnotation Foo>@Nullable(JSpecify, Spring, JSR-305) as nullable in their schema, including$refandoneOfproperties. Opt-in withspringdoc.model-converters.java-nullable-property-customizer.enabled=truespringdoc.model-converters.polymorphic-converter.one-of-as-refto emit the polymorphiconeOfunions as reusable component schemas, named after the parent schema with the suffix set byspringdoc.model-converters.polymorphic-converter.one-of-ref-suffix(Variantby default)McpStatelessSyncServer, for the STATELESS protocolChanged
PagedModeland itsPageMetadataare now marked as required, as they are always serializedamountandcurrencyproperties ofMonetaryAmountare now marked as required#model/nameto#models/NameFixed
@ResponseStatuson a controller class is now applied to the responses of its operationsWebSessionparameter is no longer documented as a query parameter in WebFlux applications/v3/api-docsno longer fails when an API version parameter declares@Schema(allowableValues)LinkRelationProviderbeanWebAsyncTaskreturn type is now unwrapped, so its response is described by its result type@Nullableon a controller method parameter now makes its schema nullableoneOfschema, such as a sealed class, is now documented as nullablev3.1.1Compare Source
Security
ThreadLocalcan leak headers between concurrent WebFlux requestsAccept-LanguageAdded
JsonNullablevalues without their Java wrapperspringdoc-openapi-bom, so that modules holding only the annotations stay in lockstepspringdoc.login-endpoint.username-exampleandspringdoc.login-endpoint.password-exampleto document the Spring Security login endpointChanged
springdoc.ai.mcp.enabled=true, andspringdoc.ai.mcp.dashboard-enabled=truefor the dashboardserver.forward-headers-strategy=framework(ornative) behind a trusted proxyspringdoc.cache.max-entries(default100) to bound the per-locale OpenAPI cachespringdoc.ai.mcp.audit.redact(defaulttrue) to mask secrets in MCP audit eventsjava.time.Duration,LocalTimeandOffsetTimeare now resolved by swagger-core instead of being forced to a barestring, so they carry aformat:duration,time-localandtimerespectively (partial-timeforLocalTimeafterPrimitiveType.enablePartialTime())Setindirectly (LinkedHashSet,TreeSet, …) is now described withuniqueItems: true, following swagger-api/swagger-core#5265Fixed
/v3/api-docsfails with aNullPointerExceptionwhen spring-hateoas is on the classpath withoutHateoasPropertiesJson Processing Exception occurredis logged for every constrained parameter whose schema is not aJsonSchemaHttpHeadersparameter is described as a schema@Embeddableare missing from the Spring Data REST schemas@OrderandOrderedignored when applying customizersPagenested in another schema is not replaced byPagedModelOptionalparameters are droppedJsonSchemacannot be cloned through JSON@ParameterObjectfields are not passed alongSortandPageableschema property orderAny?type@EmbeddedIdand@MapsIdfields recursively in the response schemas…Responserefs could leak into the schema shared with the request body representationv3.1.0Compare Source
Added
nullablefor Kotlin propertiesChanged
Fixed
swagger-configSNAKE_CASE: some Java record fields remain camelCaseWebPropertiesandWebMvcPropertiesoptional inSwaggerConfignest()predicate across all routes innestPageschema property orderParameterObjectproperty applied toPathVariablewith the same name, even in unrelated endpointsMapnot allowed in JSONv3.0.3Compare Source
Added
nullable: truefor Kotlin nullable types in schema properties@Rangeconstraint validation annotationLocalDateChanged
@ConditionalOnClass(HateoasProperties.class)inSpringDocHateoasConfigurationwindow.location.pathnamefor MCP UIFixed
Directionenum: fixed visibility scope of group order so thatsetGroupsOrdermethod can be usedPropertyResolverUtilsretains aJsonNodewhen reading anExtensionPropertyannotationJsonViewcontext when resolvingPage<T>schemav3.0.2Compare Source
Added
springdoc.swagger-ui.document-titlepropertyChanged
Fixed
null/<groupName>on second request when usingGroupedOpenApiorg.springframework.boot:spring-boot-starterOpenApifield inSpringDocConfigPropertiesdoes not comply with camel case naming conventions_linksinallOfchild schemasv3.0.1Compare Source
Added
@OrdertoApplicationReadyEventlisteneruseReturnTypeSchemais evaluated at HTTP status code level instead of method levelChanged
Fixed
@RequestBodydid not take precedence@Schemaannotations on Kotlin value classesLinkedHashSetapplication.yml/v3/api-docsreturning Base64-encoded response with Spring Framework 7.0.2v3.0.0Compare Source
Added
Changed
Fixed
v2.10.0: springdoc-openapi v2.10.0 released!Compare Source
Spring Boot 3.5.x line (built on Spring Boot 3.5.16).
PagedModel/PageMetadataproperties and theamount/currencyproperties ofMonetaryAmountare now marked as required, as they are always serialized. Generated clients will see them as non-nullable.#model/nameto#models/Name.com.scalar.mavenon the classpath and don't want it, setscalar.enabled=false.New
springdoc.model-converters.java-nullable-property-customizer.enabled=truemarks properties annotated with@Nullable(JSpecify, Spring, JSR-305) as nullable, including$refandoneOfproperties, without changing shared components.oneOfas reusable components (#3390):springdoc.model-converters.polymorphic-converter.one-of-as-ref=true, with the name suffix set byspringdoc.model-converters.polymorphic-converter.one-of-ref-suffix(Variantby default).ParameterCustomizercan read type-use annotations, including insideOptional<@MyAnnotation Foo>(#3370).Fixed
@ResponseStatuson a controller class is applied to its operations (#3352).WebSessionis no longer documented as a query parameter in WebFlux (#3355).LinkRelationProviderbean (#3364).WebAsyncTaskreturn types are unwrapped (#3368).@Nullableon a controller parameter makes its schema nullable (#3377).oneOf(e.g. sealed classes) are documented as nullable (#3381).Dependencies
swagger-ui 5.34.0 · Scalar 0.6.83 · Spring Cloud Function 4.2.4 · commons-lang3 3.21.0
Thanks to all the contributors of this release: @MaxFreedomPollard, @kdelay, @dpkass, @anupamchaubey, @Mattias-Sehlstedt, @Naresh7175, @ys0v9, @sharanggupta, @itd-sw, @Tework123, @awinishere.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.