You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/08/29 15:09:00 UTC

[jira] [Created] (CAMEL-24565) camel-console: Authoritative typed response records so dev console OpenAPI response schemas are not empty

Claus Ibsen created CAMEL-24565:
-----------------------------------

             Summary: camel-console: Authoritative typed response records so dev console OpenAPI response schemas are not empty
                 Key: CAMEL-24565
                 URL: https://issues.apache.org/jira/browse/CAMEL-24565
             Project: Camel
          Issue Type: New Feature
          Components: camel-core
            Reporter: Claus Ibsen


Follow-up to CAMEL-24564 (https://github.com/apache/camel/pull/25885). The generated OpenAPI spec currently declares every dev console's 200 response as "content": {"application/json": {}} -- an empty schema, no contract for what actually comes back.

This adds a real per-console response contract, declared statically in the Java source as a nested `public record Response(...)` next to doCallJson(), so it is visible to any future editor (human or AI) touching that method, and is read by the OpenAPI generator to produce a JSON Schema.

Decision: the record must be authoritative -- doCallJson() actually constructs and returns it (converted to JsonObject via a new generic reflective mapper), not just a parallel declarative doc that could drift from the real output.

New infrastructure needed (none of this exists today):
- Runtime: org.apache.camel.util.json.JsonRecordSupport in tooling/camel-util-json -- generic record -> JsonObject reflective converter.
- Build-time: a static buildResponseSchema(Class) method in GenerateDevConsoleMojo (tooling/maven/camel-package-maven-plugin) -- generic record-class -> JSON Schema reflective generator, reading @Metadata descriptions off record components.
- DevConsoleModel (camel-tooling-model) gains a responseSchema field (raw JsonObject), read/written by JsonMapper, consumed by DevConsoleOpenApiHelper.buildPathItem() to populate the response content schema instead of the empty placeholder.

Pilot scope (5 consoles, ordered by increasing complexity): CircuitBreakerDevConsole, InflightConsole, TypeConverterConsole, HealthDevConsole, ContextDevConsole. The remaining ~50 dev consoles keep the empty placeholder until a follow-up continues the rollout.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)