From c77054dbd1dd102a0e64529d042fe06f66a31d74 Mon Sep 17 00:00:00 2001 From: Tony Germano Date: Wed, 21 Oct 2026 01:12:29 -0400 Subject: [PATCH 1/3] Align the AWS SDK family on 2.55.12 The AWS SDK modules were on 2.15.28 while netty-nio-client was already on 2.20.140. The SDK supports only matching versions across its modules, and the mix did not link: netty-nio-client 2.20.140 references members of utils and http-client-spi that 2.15.28 lacks (for example ProxySystemSetting.HTTPS_PROXY_HOST, SdkHttpRequest.forEachHeader and SdkHttpConfigurationOption.TCP_KEEPALIVE), and s3 2.15.28 references the arns module, which never shipped, so parsing an S3 ARN failed with NoClassDefFoundError. Align on 2.55.12, the newest release past the 14-day minimum age as of 2026-10-22. Since 2.17 the SDK parses JSON with its own shaded copy of jackson-core (third-party-jackson-core) and no longer depends on com.fasterxml.jackson at all, which is what lets the next commit realign Jackson. 2.20.140, the version netty-nio-client was on, bundles jackson-core 2.15.2, which has three advisories (CVE-2026-18401, CVE-2026-68494 and CVE-2026-89425); 2.55.12 bundles 2.21.7, which has none. New runtime modules: arns, checksums, checksums-spi, crt-core, endpoints-spi, http-auth, http-auth-aws, http-auth-aws-eventstream, http-auth-spi, identity-spi, json-utils, retries, retries-spi, third-party-jackson-core and utils-lite, placed with the rest of the SDK. No other library changes: the SDK's POMs ask for newer netty, httpcore, slf4j and reactive-streams, but every member reference resolves against the versions already shipped. The only non-AWS additions to the verification metadata are two BOM POMs, junit-bom (imported by the SDK's bom-internal) and jetty-bom (imported by netty-nio-client's POM); no jars come from them. apache5-client is left out. Since 2.46 it is the service clients' default HTTP client, but our S3 connector sets ApacheHttpClient explicitly, and without apache5-client on the classpath a client built without an HTTP client still gets ApacheHttpClient, as before. The client still ships only regions and utils; Region.regions() and Region.id(), the only calls it makes, need nothing else. The region list grows from 31 to 53. Changes that user scripts calling the SDK directly may notice, compared with 2.15.28: - Since 2.30, S3 clients send a CRC32 checksum on upload and validate checksums on download. AWS S3 supports this, including from our S3 connector, but some S3-compatible stores reject it; set requestChecksumCalculation(WHEN_REQUIRED) on the client builder or AWS_REQUEST_CHECKSUM_CALCULATION=when_required to turn it off. - Since 2.53, the SDK core needs service client modules of 2.28.1 or later, so older AWS service jars added to custom-lib stop working. - Since 2.25, the Netty async client takes its proxy settings from environment variables and system properties by default, as the Apache client already did. - Removed classes and members: JavaSystemSetting.USER_REGION, core.util.json.JacksonUtils, the services.s3.checksums classes and the metadata classes of retired services. - Breaking for compiled code and subclasses only: HttpCredentialsProvider became an interface, the STS credential providers' getUpdatedCredentials returns AwsSessionCredentials, NoOpSigner is final, and the JSON protocol factories use the shaded JsonFactory. Every software.amazon.awssdk member reference in the distribution now resolves, except those into the optional aws-crt native library, which was not shipped before either. Checksums regenerated with a cold cache per CONTRIBUTING.md. CVE: CVE-2026-18401 CVE: CVE-2026-68494 CVE: CVE-2026-89425 Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Tony Germano --- gradle/libs.versions.toml | 41 +++- gradle/vendored-layout.json | 15 ++ gradle/verification-metadata.xml | 357 +++++++++++++++++++++---------- 3 files changed, 289 insertions(+), 124 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9eb0f3a5db..fb3493f3b6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ [versions] # Shared by artifacts released together; bump the whole family at once. asm = "9.6" -awssdk = "2.15.28" +awssdk = "2.55.12" bouncycastle = "1.78.1" byte-buddy = "1.14.13" derby = "10.10.2.0" @@ -49,23 +49,37 @@ asm-util = { module = "org.ow2.asm:asm-util", version.ref = "asm" } aws-eventstream = { module = "software.amazon.eventstream:eventstream", version = "1.0.1" } awssdk-annotations = { module = "software.amazon.awssdk:annotations", version.ref = "awssdk" } awssdk-apache-client = { module = "software.amazon.awssdk:apache-client", version.ref = "awssdk" } +awssdk-arns = { module = "software.amazon.awssdk:arns", version.ref = "awssdk" } awssdk-auth = { module = "software.amazon.awssdk:auth", version.ref = "awssdk" } awssdk-aws-core = { module = "software.amazon.awssdk:aws-core", version.ref = "awssdk" } awssdk-aws-json-protocol = { module = "software.amazon.awssdk:aws-json-protocol", version.ref = "awssdk" } awssdk-aws-query-protocol = { module = "software.amazon.awssdk:aws-query-protocol", version.ref = "awssdk" } awssdk-aws-xml-protocol = { module = "software.amazon.awssdk:aws-xml-protocol", version.ref = "awssdk" } +awssdk-checksums = { module = "software.amazon.awssdk:checksums", version.ref = "awssdk" } +awssdk-checksums-spi = { module = "software.amazon.awssdk:checksums-spi", version.ref = "awssdk" } +awssdk-crt-core = { module = "software.amazon.awssdk:crt-core", version.ref = "awssdk" } +awssdk-endpoints-spi = { module = "software.amazon.awssdk:endpoints-spi", version.ref = "awssdk" } +awssdk-http-auth = { module = "software.amazon.awssdk:http-auth", version.ref = "awssdk" } +awssdk-http-auth-aws = { module = "software.amazon.awssdk:http-auth-aws", version.ref = "awssdk" } +awssdk-http-auth-aws-eventstream = { module = "software.amazon.awssdk:http-auth-aws-eventstream", version.ref = "awssdk" } +awssdk-http-auth-spi = { module = "software.amazon.awssdk:http-auth-spi", version.ref = "awssdk" } awssdk-http-client-spi = { module = "software.amazon.awssdk:http-client-spi", version.ref = "awssdk" } +awssdk-identity-spi = { module = "software.amazon.awssdk:identity-spi", version.ref = "awssdk" } +awssdk-json-utils = { module = "software.amazon.awssdk:json-utils", version.ref = "awssdk" } awssdk-kms = { module = "software.amazon.awssdk:kms", version.ref = "awssdk" } awssdk-metrics-spi = { module = "software.amazon.awssdk:metrics-spi", version.ref = "awssdk" } -# AWS SDK module, but not on the awssdk ref: the vendored jar was 2.20.140 -awssdk-netty-nio-client = { module = "software.amazon.awssdk:netty-nio-client", version = "2.20.140" } +awssdk-netty-nio-client = { module = "software.amazon.awssdk:netty-nio-client", version.ref = "awssdk" } awssdk-profiles = { module = "software.amazon.awssdk:profiles", version.ref = "awssdk" } awssdk-protocol-core = { module = "software.amazon.awssdk:protocol-core", version.ref = "awssdk" } awssdk-regions = { module = "software.amazon.awssdk:regions", version.ref = "awssdk" } +awssdk-retries = { module = "software.amazon.awssdk:retries", version.ref = "awssdk" } +awssdk-retries-spi = { module = "software.amazon.awssdk:retries-spi", version.ref = "awssdk" } awssdk-s3 = { module = "software.amazon.awssdk:s3", version.ref = "awssdk" } awssdk-sdk-core = { module = "software.amazon.awssdk:sdk-core", version.ref = "awssdk" } awssdk-sts = { module = "software.amazon.awssdk:sts", version.ref = "awssdk" } +awssdk-third-party-jackson-core = { module = "software.amazon.awssdk:third-party-jackson-core", version.ref = "awssdk" } awssdk-utils = { module = "software.amazon.awssdk:utils", version.ref = "awssdk" } +awssdk-utils-lite = { module = "software.amazon.awssdk:utils-lite", version.ref = "awssdk" } bcpkix-jdk18on = { module = "org.bouncycastle:bcpkix-jdk18on", version.ref = "bouncycastle" } bcprov-jdk18on = { module = "org.bouncycastle:bcprov-jdk18on", version.ref = "bouncycastle" } bcutil-jdk18on = { module = "org.bouncycastle:bcutil-jdk18on", version.ref = "bouncycastle" } @@ -133,10 +147,8 @@ jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations # off the jackson ref: bumped alone for a security fix. Realigning the # family is blocked: databind 2.16 and later remove APIs that # swagger-core 2.0.10 (BeanDescription.findJsonValueMethod, -# AnnotationIntrospector.findPropertiesToIgnore) and AWS SDK 2.15.28 -# regions (PropertyNamingStrategy.PASCAL_CASE_TO_CAMEL_CASE) still call, -# failing at runtime with NoSuchMethodError/NoSuchFieldError. Upgrade -# those callers first. +# AnnotationIntrospector.findPropertiesToIgnore) still calls, failing at +# runtime with NoSuchMethodError. Upgrade swagger-core first. jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version = "2.18.8" } jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" } jackson-dataformat-cbor = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor", version.ref = "jackson" } @@ -470,22 +482,37 @@ server-main = [ "aws-eventstream", "awssdk-annotations", "awssdk-apache-client", + "awssdk-arns", "awssdk-auth", "awssdk-aws-core", "awssdk-aws-json-protocol", "awssdk-aws-query-protocol", "awssdk-aws-xml-protocol", + "awssdk-checksums", + "awssdk-checksums-spi", + "awssdk-crt-core", + "awssdk-endpoints-spi", + "awssdk-http-auth", + "awssdk-http-auth-aws", + "awssdk-http-auth-aws-eventstream", + "awssdk-http-auth-spi", "awssdk-http-client-spi", + "awssdk-identity-spi", + "awssdk-json-utils", "awssdk-kms", "awssdk-metrics-spi", "awssdk-netty-nio-client", "awssdk-profiles", "awssdk-protocol-core", "awssdk-regions", + "awssdk-retries", + "awssdk-retries-spi", "awssdk-s3", "awssdk-sdk-core", "awssdk-sts", + "awssdk-third-party-jackson-core", "awssdk-utils", + "awssdk-utils-lite", "bcpkix-jdk18on", "bcprov-jdk18on", "bcutil-jdk18on", diff --git a/gradle/vendored-layout.json b/gradle/vendored-layout.json index 7bffae2a4d..d2de6345df 100644 --- a/gradle/vendored-layout.json +++ b/gradle/vendored-layout.json @@ -359,22 +359,37 @@ "org.yaml:snakeyaml": "jackson", "software.amazon.awssdk:annotations": "aws", "software.amazon.awssdk:apache-client": "aws", + "software.amazon.awssdk:arns": "aws", "software.amazon.awssdk:auth": "aws", "software.amazon.awssdk:aws-core": "aws", "software.amazon.awssdk:aws-json-protocol": "aws", "software.amazon.awssdk:aws-query-protocol": "aws", "software.amazon.awssdk:aws-xml-protocol": "aws", + "software.amazon.awssdk:checksums": "aws", + "software.amazon.awssdk:checksums-spi": "aws", + "software.amazon.awssdk:crt-core": "aws", + "software.amazon.awssdk:endpoints-spi": "aws", + "software.amazon.awssdk:http-auth": "aws", + "software.amazon.awssdk:http-auth-aws": "aws", + "software.amazon.awssdk:http-auth-aws-eventstream": "aws", + "software.amazon.awssdk:http-auth-spi": "aws", "software.amazon.awssdk:http-client-spi": "aws", + "software.amazon.awssdk:identity-spi": "aws", + "software.amazon.awssdk:json-utils": "aws", "software.amazon.awssdk:kms": "aws", "software.amazon.awssdk:metrics-spi": "aws", "software.amazon.awssdk:netty-nio-client": "aws/ext/netty", "software.amazon.awssdk:profiles": "aws", "software.amazon.awssdk:protocol-core": "aws", "software.amazon.awssdk:regions": "aws", + "software.amazon.awssdk:retries": "aws", + "software.amazon.awssdk:retries-spi": "aws", "software.amazon.awssdk:s3": "aws", "software.amazon.awssdk:sdk-core": "aws", "software.amazon.awssdk:sts": "aws", + "software.amazon.awssdk:third-party-jackson-core": "aws", "software.amazon.awssdk:utils": "aws", + "software.amazon.awssdk:utils-lite": "aws", "software.amazon.eventstream:eventstream": "aws", "xpp3:xpp3": "" }, diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index a55f913c97..d92e45779f 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -2100,6 +2100,11 @@ + + + + + @@ -2631,6 +2636,14 @@ + + + + + + + + @@ -3201,193 +3214,303 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - + + + + + + + + + + + + - - - + + + - - + + - - - + + + + + + - - + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + - - - + + + + + + - - - + + + - - + + - - - + + + + + + - - - + + + + + + - - - + + + - - - + + + - - + + - - - + + + + + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + + + + + + - - - + + + + + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - - - + + + - - + + From 4c328e22ba10b90a303ff38b81030940270fa4fa Mon Sep 17 00:00:00 2001 From: Tony Germano Date: Wed, 21 Oct 2026 06:47:44 -0400 Subject: [PATCH 2/3] Realign Jackson on 2.18.11 and upgrade Swagger to 2.2.41 jackson-core was bumped alone to 2.18.8 for a security fix, leaving the rest of the family on 2.14.3. The family could not follow, because jackson-databind 2.16 removed APIs that swagger-core 2.0.10 and AWS SDK 2.15.28 called. The previous commit took the AWS SDK off Jackson. This one upgrades Swagger and realigns all of Jackson in one step, since neither Swagger release works with the other's Jackson. Jackson 2.18.11 rather than 2.18.8: databind 2.14.3 has eleven open advisories, and 2.18.8 still has nine in databind and two in core. 2.18.11 is the first release with none in any shipped module. The 2.19 line is no longer maintained: 2.19.4, its last release, has sixteen open advisories across databind and core. Swagger 2.2.41 rather than 2.2.28, the first release built against Jackson 2.18: with 2.2.28 the generated /api/openapi.json loses DashboardStatus.childStatuses, a property the API returns. 2.2.41 is the first release that keeps it. It is built against Jackson 2.19.2, but every com.fasterxml.jackson member reference it makes resolves against 2.18.11. No new runtime dependencies: its POM adds jackson-jaxrs-json-provider and newer javassist, which none of its classes reference. Its only unresolved references are to three Bean Validation 2.0 constraints (Email, NotBlank, NotEmpty) that validation-api 1.1.0 lacks; these are only reached for models annotated with them, and none can be. The generated OpenAPI document changes in these ways: - byte[] properties are a base64 string (type string, format byte) instead of an array of strings - CodeTemplateLibrarySaveResult's Throwable is named librariesCause, after its getter, instead of cause - form parameters of the channel, statistics and login operations gain their descriptions - twenty generated operationIds of overloaded methods swap their _1 suffix, because Swagger now reads the overloads in the opposite order; the next commit pins the previous IDs Every Jackson and Swagger member reference in the distribution resolves, apart from the Bean Validation constraints above and log4j-core's optional XML and YAML layouts, which were unresolved before. Checksums regenerated with a cold cache per CONTRIBUTING.md. CVE: CVE-2026-19032 CVE: CVE-2026-54512 CVE: CVE-2026-54513 CVE: CVE-2026-54514 CVE: CVE-2026-54515 CVE: CVE-2026-59889 CVE: CVE-2026-68497 CVE: CVE-2026-77310 CVE: CVE-2026-83557 CVE: CVE-2026-89407 CVE: CVE-2026-89425 CVE: CVE-2026-91776 CVE: CVE-2026-91777 Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Tony Germano --- gradle/libs.versions.toml | 12 +- gradle/verification-metadata.xml | 181 +++++++++++++------------------ 2 files changed, 81 insertions(+), 112 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fb3493f3b6..a1b8413013 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,8 +21,7 @@ hapi = "2.3" hk2 = "2.4.0-b31" httpclient = "4.5.13" itext = "2.1.7" -# do not bump past 2.15.x before reading the note on jackson-core -jackson = "2.14.3" +jackson = "2.18.11" jasper = "8.5.70" jaxb-ri = "2.4.0-b180725.0644" jaxws-ri = "2.3.0.2" @@ -37,7 +36,7 @@ netty-reactive-streams = "2.0.8" openhtmltopdf = "1.0.9" pdfbox = "2.0.24" slf4j = "1.7.30" -swagger = "2.0.10" +swagger = "2.2.41" taglibs = "1.2.5" [libraries] @@ -144,12 +143,7 @@ itext = { module = "com.lowagie:itext", version.ref = "itext" } itext-rtf = { module = "com.lowagie:itext-rtf", version.ref = "itext" } j2objc-annotations = { module = "com.google.j2objc:j2objc-annotations", version = "1.3" } jackson-annotations = { module = "com.fasterxml.jackson.core:jackson-annotations", version.ref = "jackson" } -# off the jackson ref: bumped alone for a security fix. Realigning the -# family is blocked: databind 2.16 and later remove APIs that -# swagger-core 2.0.10 (BeanDescription.findJsonValueMethod, -# AnnotationIntrospector.findPropertiesToIgnore) still calls, failing at -# runtime with NoSuchMethodError. Upgrade swagger-core first. -jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version = "2.18.8" } +jackson-core = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson" } jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" } jackson-dataformat-cbor = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor", version.ref = "jackson" } jackson-dataformat-yaml = { module = "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml", version.ref = "jackson" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index d92e45779f..b18d4496de 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -42,11 +42,6 @@ - - - - - @@ -57,14 +52,9 @@ - - - - - - - - + + + @@ -72,14 +62,9 @@ - - - - - - - - + + + @@ -97,11 +82,6 @@ - - - - - @@ -117,12 +97,12 @@ - - - + + + - - + + @@ -133,12 +113,12 @@ - - - + + + - - + + @@ -149,12 +129,12 @@ - - - + + + - - + + @@ -165,20 +145,20 @@ - - - + + + - - + + - - - + + + - - + + @@ -189,14 +169,14 @@ - - - + + + - - - + + + @@ -204,12 +184,12 @@ - - - + + + - - + + @@ -233,9 +213,9 @@ - - - + + + @@ -1037,57 +1017,57 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + @@ -3110,11 +3090,6 @@ - - - - - From 543e3415b2942f1a1338a197efed9d32ea307001 Mon Sep 17 00:00:00 2001 From: Tony Germano Date: Wed, 21 Oct 2026 17:48:27 -0400 Subject: [PATCH 3/3] Pin the operationIds of overloaded API methods Swagger derives an operationId from the Java method name and gives an overloaded name a _1 suffix in the order it reads the methods. Swagger 2.2.41 reads them in the opposite order from 2.0.10, so ten pairs of operations swapped IDs: getEvents, for example, moved from GET /events to POST /events/_search. A client generated from the spec would map the same method name to a different endpoint. Set operationId explicitly on the 20 affected operations, keeping the IDs the previous spec published. The generated spec now matches the previous one in every operationId, and is otherwise unchanged from the upgrade commit. Assisted-by: Claude:claude-opus-5-5 Signed-off-by: Tony Germano --- .../core/api/servlets/AlertServletInterface.java | 4 ++-- .../api/servlets/ChannelServletInterface.java | 8 ++++---- .../ChannelStatisticsServletInterface.java | 4 ++-- .../core/api/servlets/EventServletInterface.java | 8 ++++---- .../api/servlets/MessageServletInterface.java | 16 ++++++++-------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/server/src/main/java/com/mirth/connect/client/core/api/servlets/AlertServletInterface.java b/server/src/main/java/com/mirth/connect/client/core/api/servlets/AlertServletInterface.java index ae5742d903..0d6d037546 100644 --- a/server/src/main/java/com/mirth/connect/client/core/api/servlets/AlertServletInterface.java +++ b/server/src/main/java/com/mirth/connect/client/core/api/servlets/AlertServletInterface.java @@ -117,7 +117,7 @@ public List getAlertsPost( @POST @Path("/{alertId}/_getInfo") - @Operation(summary = "Returns an AlertInfo object containing the alert model, alert protocol options, and any updated channel summaries.") + @Operation(operationId = "getAlertInfo", summary = "Returns an AlertInfo object containing the alert model, alert protocol options, and any updated channel summaries.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "alert_info", ref = "../apiexamples/alert_info_xml") }), @@ -136,7 +136,7 @@ public AlertInfo getAlertInfo(// @formatter:off @POST @Path("/_getInfo") - @Operation(summary = "Returns an AlertInfo object containing alert protocol options and any updated channel summaries.") + @Operation(operationId = "getAlertInfo_1", summary = "Returns an AlertInfo object containing alert protocol options and any updated channel summaries.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "alert_info", ref = "../apiexamples/alert_info_xml") }), diff --git a/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelServletInterface.java b/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelServletInterface.java index fa32cb3e42..e90b4a5da4 100644 --- a/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelServletInterface.java +++ b/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelServletInterface.java @@ -189,7 +189,7 @@ public List getChannelSummary(// @formatter:off @POST @Path("/_setEnabled") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @Operation(summary = "Enables/disables the specified channels. " + SWAGGER_ARRAY_DISCLAIMER) + @Operation(operationId = "setChannelEnabled", summary = "Enables/disables the specified channels. " + SWAGGER_ARRAY_DISCLAIMER) @MirthOperation(name = "setChannelEnabled", display = "Set channel enabled flag", permission = Permissions.CHANNELS_MANAGE) public void setChannelEnabled(// @formatter:off @Param("channelIds") @Parameter(description = "The IDs of the channels to enable/disable. If absent, all channels will be enabled/disabled.") @FormParam("channelId") Set channelIds, @@ -199,7 +199,7 @@ public void setChannelEnabled(// @formatter:off @POST @Path("/{channelId}/enabled/{enabled}") - @Operation(summary = "Enables/disables the specified channel.") + @Operation(operationId = "setChannelEnabled_1", summary = "Enables/disables the specified channel.") @MirthOperation(name = "setChannelEnabled", display = "Set channel enabled flag", permission = Permissions.CHANNELS_MANAGE) public void setChannelEnabled(// @formatter:off @Param("channelId") @Parameter(description = "The ID of the channel.", required = true) @PathParam("channelId") String channelId, @@ -210,7 +210,7 @@ public void setChannelEnabled(// @formatter:off @POST @Path("/_setInitialState") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @Operation(summary = "Sets the initial state for the specified channels. " + SWAGGER_ARRAY_DISCLAIMER) + @Operation(operationId = "setChannelInitialState", summary = "Sets the initial state for the specified channels. " + SWAGGER_ARRAY_DISCLAIMER) @MirthOperation(name = "setChannelInitialState", display = "Set channel initial state", permission = Permissions.CHANNELS_MANAGE) public void setChannelInitialState(// @formatter:off @Param("channelIds") @Parameter(description = "The IDs of the channels to modify initial states on. If absent, the initial state will be set on all channels.") @FormParam("channelId") Set channelIds, @@ -222,7 +222,7 @@ public void setChannelInitialState(// @formatter:off @POST @Path("/{channelId}/initialState/{initialState}") - @Operation(summary = "Sets the initial state for a single channel.") + @Operation(operationId = "setChannelInitialState_1", summary = "Sets the initial state for a single channel.") @MirthOperation(name = "setChannelInitialState", display = "Set channel initial state", permission = Permissions.CHANNELS_MANAGE) public void setChannelInitialState(// @formatter:off @Param("channelId") @Parameter(description = "The ID of the channel.", required = true) @PathParam("channelId") String channelId, diff --git a/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelStatisticsServletInterface.java b/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelStatisticsServletInterface.java index a6ba58b07e..05729c1971 100644 --- a/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelStatisticsServletInterface.java +++ b/server/src/main/java/com/mirth/connect/client/core/api/servlets/ChannelStatisticsServletInterface.java @@ -47,7 +47,7 @@ public interface ChannelStatisticsServletInterface extends BaseServletInterface @GET @Path("/statistics") - @Operation(summary = "Returns the Statistics for all channels.") + @Operation(operationId = "getStatistics", summary = "Returns the Statistics for all channels.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "channel_statistics_list", ref = "../apiexamples/channel_statistics_list_xml") }), @Content(mediaType = MediaType.APPLICATION_JSON, examples = { @@ -80,7 +80,7 @@ public List getStatisticsPost(//@formatter:off @GET @Path("/{channelId}/statistics") - @Operation(summary = "Returns the Statistics for the channel with the specified id.") + @Operation(operationId = "getStatistics_1", summary = "Returns the Statistics for the channel with the specified id.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "channel_statistics", ref = "../apiexamples/channel_statistics_xml") }), @Content(mediaType = MediaType.APPLICATION_JSON, examples = { diff --git a/server/src/main/java/com/mirth/connect/client/core/api/servlets/EventServletInterface.java b/server/src/main/java/com/mirth/connect/client/core/api/servlets/EventServletInterface.java index 361b9ad5df..ec3a4f1d5f 100644 --- a/server/src/main/java/com/mirth/connect/client/core/api/servlets/EventServletInterface.java +++ b/server/src/main/java/com/mirth/connect/client/core/api/servlets/EventServletInterface.java @@ -66,7 +66,7 @@ public interface EventServletInterface extends BaseServletInterface { @POST @Path("/_search") - @Operation(summary = "Search for events by specific filter criteria.") + @Operation(operationId = "getEvents_1", summary = "Search for events by specific filter criteria.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "serverEventList", ref = "../apiexamples/server_event_list_xml") }), @Content(mediaType = MediaType.APPLICATION_JSON, examples = { @@ -84,7 +84,7 @@ public List getEvents(// @formatter:off @GET @Path("/") - @Operation(summary = "Search for events by specific filter criteria.") + @Operation(operationId = "getEvents", summary = "Search for events by specific filter criteria.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "serverEventList", ref = "../apiexamples/server_event_list_xml") }), @Content(mediaType = MediaType.APPLICATION_JSON, examples = { @@ -108,7 +108,7 @@ public List getEvents(// @formatter:off @POST @Path("/count/_search") - @Operation(summary = "Count number for events by specific filter criteria.") + @Operation(operationId = "getEventCount_1", summary = "Count number for events by specific filter criteria.") @MirthOperation(name = "getEventCount", display = "Get events results count", permission = Permissions.EVENTS_VIEW, auditable = false, abortable = true) @Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN }) public Long getEventCount(@Param("filter") @RequestBody(description = "The EventFilter object to use to query events by.", required = true, content = { @@ -119,7 +119,7 @@ public Long getEventCount(@Param("filter") @RequestBody(description = "The Event @GET @Path("/count") - @Operation(summary = "Count number for events by specific filter criteria.") + @Operation(operationId = "getEventCount", summary = "Count number for events by specific filter criteria.") @MirthOperation(name = "getEventCount", display = "Get events results count", permission = Permissions.EVENTS_VIEW, auditable = false, abortable = true) @Produces({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN }) public Long getEventCount(// @formatter:off diff --git a/server/src/main/java/com/mirth/connect/client/core/api/servlets/MessageServletInterface.java b/server/src/main/java/com/mirth/connect/client/core/api/servlets/MessageServletInterface.java index f8f88a552f..7aaa276b19 100644 --- a/server/src/main/java/com/mirth/connect/client/core/api/servlets/MessageServletInterface.java +++ b/server/src/main/java/com/mirth/connect/client/core/api/servlets/MessageServletInterface.java @@ -62,7 +62,7 @@ public interface MessageServletInterface extends BaseServletInterface { @POST @Path("/{channelId}/messages") @Consumes(MediaType.TEXT_PLAIN) - @Operation(summary = "Processes a new message through a channel.") + @Operation(operationId = "processMessage", summary = "Processes a new message through a channel.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "long", ref = "../apiexamples/long_xml") }), @@ -81,7 +81,7 @@ public Long processMessage(// @formatter:off @POST @Path("/{channelId}/messagesWithObj") - @Operation(summary = "Processes a new message through a channel, using the RawMessage object.") + @Operation(operationId = "processMessage_1", summary = "Processes a new message through a channel, using the RawMessage object.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "long", ref = "../apiexamples/long_xml") }), @@ -255,7 +255,7 @@ public List getMessages(// @formatter:off @POST @Path("/{channelId}/messages/count/_search") - @Operation(summary = "Count number for messages by specific filter criteria.") + @Operation(operationId = "getMessageCount_1", summary = "Count number for messages by specific filter criteria.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "messageCount", ref = "../apiexamples/long_xml") }), @@ -273,7 +273,7 @@ public Long getMessageCount(// @formatter:off @GET @Path("/{channelId}/messages/count") - @Operation(summary="Count number for messages by specific filter criteria.") + @Operation(operationId = "getMessageCount", summary="Count number for messages by specific filter criteria.") @ApiResponse(content = { @Content(mediaType = MediaType.APPLICATION_XML, examples = { @ExampleObject(name = "messageCount", ref = "../apiexamples/long_xml") }), @@ -322,7 +322,7 @@ public Long getMessageCount(// @formatter:off @POST @Path("/{channelId}/messages/_reprocessWithFilter") - @Operation(summary = "Reprocesses messages through a channel filtering with a MessageFilter.") + @Operation(operationId = "reprocessMessages_1", summary = "Reprocesses messages through a channel filtering with a MessageFilter.") @MirthOperation(name = "reprocessMessages", display = "Reprocess messages", permission = Permissions.MESSAGES_REPROCESS_RESULTS, type = ExecuteType.ASYNC) public void reprocessMessages(// @formatter:off @Param("channelId") @Parameter(description = "The ID of the channel.", required = true) @PathParam("channelId") String channelId, @@ -339,7 +339,7 @@ public void reprocessMessages(// @formatter:off @POST @Path("/{channelId}/messages/_reprocess") @Consumes("") - @Operation(summary = "Reprocesses messages through a channel by specific filter criteria.") + @Operation(operationId = "reprocessMessages", summary = "Reprocesses messages through a channel by specific filter criteria.") @MirthOperation(name = "reprocessMessages", display = "Reprocess messages", permission = Permissions.MESSAGES_REPROCESS_RESULTS, type = ExecuteType.ASYNC) public void reprocessMessages(// @formatter:off @Param("channelId") @Parameter(description = "The ID of the channel.", required = true) @PathParam("channelId") String channelId, @@ -467,7 +467,7 @@ public void removeMessage(// @formatter:off @DELETE @Path("/{channelId}/messages/_removeAll") - @Operation(summary = "Removes all messages for the specified channel.") + @Operation(operationId = "removeAllMessages_1", summary = "Removes all messages for the specified channel.") @MirthOperation(name = "removeAllMessages", display = "Remove all messages", permission = Permissions.MESSAGES_REMOVE_ALL) public void removeAllMessages(// @formatter:off @Param("channelId") @Parameter(description = "The ID of the channel.", required = true) @PathParam("channelId") String channelId, @@ -477,7 +477,7 @@ public void removeAllMessages(// @formatter:off @DELETE @Path("/_removeAllMessages") - @Operation(summary = "Removes all messages for multiple specified channels.") + @Operation(operationId = "removeAllMessages", summary = "Removes all messages for multiple specified channels.") @MirthOperation(name = "removeAllMessages", display = "Remove all messages", permission = Permissions.MESSAGES_REMOVE_ALL) public void removeAllMessages(// @formatter:off @Param("channelIds") @Parameter(description = "The IDs of the channels.", required = true) @QueryParam("channelId") Set channelIds,