Heya Paolo,
Thanks for catching this and providing a fix! It makes sense to me
that since this is part of Kafka Connect's REST API it is public and
therefore we can't change the output without a corresponding KIP. I
have reviewed the PR and I am happy to cherry-pick it once it has made
it into trunk and include it in RC1.
Best,
Christo
On Fri, 16 Jan 2026 at 10:33, Paolo Patierno <
paolo.p...@gmail.com> wrote:
>
> FYI I opened
https://issues.apache.org/jira/browse/KAFKA-20076 and also a
> corresponding PR to fix the issue here
>
https://github.com/apache/kafka/pull/21318
> It's against trunk but I think we should (if/when approved) cherry-pick to
> 4.2.0.
>
> Thanks,
> Paolo
>
> On Thu, 15 Jan 2026 at 17:01, Paolo Patierno <
paolo.p...@gmail.com>
> wrote:
>
> > Hello,
> > I think I have found a regression.
> > When running Kafka Connect and submitting an HTTP GET request to the
> > /connector-plugins endpoint, the JSON serialized "type" filed in the body
> > response is now uppercase instead of being lowercase as in the past.
> > Following a comparison between Apache Kafka 4.1 ...
> >
> >
> > [{"class":"org.apache.kafka.connect.mirror.MirrorCheckpointConnector","type":"source","version":"4.1.1"},{"class":"org.apache.kafka.connect.mirror.MirrorHeartbeatConnector","type":"source","version":"4.1.1"},{"class":"org.apache.kafka.connect.mirror.MirrorSourceConnector","type":"source","version":"4.1.1"}]
> >
> > ... and the current Apache Kafka 4.2 RC0
> >
> >
> > [{"class":"org.apache.kafka.connect.mirror.MirrorCheckpointConnector","type":"SOURCE","version":"4.2.0"},{"class":"org.apache.kafka.connect.mirror.MirrorHeartbeatConnector","type":"SOURCE","version":"4.2.0"},{"class":"org.apache.kafka.connect.mirror.MirrorSourceConnector","type":"SOURCE","version":"4.2.0"}]
> >
> > As you can see it's "source" vs "SOURCE". I had same result with "sink" vs
> > "SINK".
> >
> > I think this is due to the last change from converting the PluginInfo from
> > being a class to a record which had an impact together with the JSON
> > serialization.
> > When it was a class, a dedicated type.toString() was used which explicitly
> > does a lower case transformation.
> > As a record, the "type" field is directly serialized by JSON by using the
> > enum values from PluginType which are all uppercase of course.
> > It means that this issue affects all the other values as well the way they
> > are serialized (not just SINK, SOURCE but also CONVERTER, TRANSFORMATION,
> > and so on).
> >
> > If you like I could provide a contribution for that.
> >
> > Thanks,
> > Paolo.
> > --
> > Paolo Patierno
> >
> > *Senior Principal Software Engineer @ IBM**CNCF Ambassador*
> >
> > Twitter : @ppatierno <
http://twitter.com/ppatierno>
> > Linkedin : paolopatierno <
http://it.linkedin.com/in/paolopatierno>
> > GitHub : ppatierno <
https://github.com/ppatierno>
> >
>
>
> --
> Paolo Patierno
>
> *Senior Principal Software Engineer @ IBM**CNCF Ambassador*
>
> Twitter : @ppatierno <
http://twitter.com/ppatierno>
> Linkedin : paolopatierno <
http://it.linkedin.com/in/paolopatierno>
> GitHub : ppatierno <
https://github.com/ppatierno>