This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch feature/CAMEL-24514-devconsole-openapi-get
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 67f15ff0f0513daf6143c80a3b8aef67d4653aa7
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Aug 29 13:04:19 2026 +0200

    CAMEL-24514: camel-console - Surface readOnly flag in DevConsole catalog 
metadata
    
    Move the read-only/mutating classification from a per-class isReadOnly()
    override onto a new @DevConsole(readOnly=...) annotation attribute, so it is
    available both at runtime (AbstractDevConsole reads it reflectively) and at
    build time. GenerateDevConsoleMojo now emits "readOnly" into each console's
    generated dev-console/*.json, so the static catalog metadata already carries
    the safe/mutating classification ahead of a future release-time static
    OpenAPI doc generator, without needing a running CamelContext.
    
    Regenerated the dev-console JSON for every module with a @DevConsole class
    (core, camel-jfr, and ~24 component/dsl/catalog modules) to pick up the new
    field; no Java behavior changes outside camel-console and camel-jfr.
    
    Co-Authored-By: Claude Sonnet 5 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../META-INF/org/apache/camel/dev-console/catalog.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/aws-secrets.json    |  1 +
 .../META-INF/org/apache/camel/dev-console/aws2-s3.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/azure-secrets.json  |  1 +
 .../META-INF/org/apache/camel/dev-console/route-diagram.json  |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/sftp.json |  1 +
 .../META-INF/org/apache/camel/dev-console/gcp-secrets.json    |  1 +
 .../META-INF/org/apache/camel/dev-console/groovy.json         |  1 +
 .../org/apache/camel/dev-console/hashicorp-secrets.json       |  1 +
 .../META-INF/org/apache/camel/dev-console/ibm-secrets.json    |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/jfr.json  |  1 +
 .../java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java |  7 +------
 .../META-INF/org/apache/camel/dev-console/kafka.json          |  1 +
 .../org/apache/camel/dev-console/kubernetes-configmaps.json   |  1 +
 .../org/apache/camel/dev-console/kubernetes-secrets.json      |  1 +
 .../META-INF/org/apache/camel/dev-console/micrometer.json     |  1 +
 .../org/apache/camel/dev-console/fault-tolerance.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/opentelemetry.json  |  1 +
 .../org/apache/camel/dev-console/main-http-server.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/platform-http.json  |  1 +
 .../META-INF/org/apache/camel/dev-console/quartz.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/resilience4j.json   |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/stub.json |  1 +
 .../org/apache/camel/dev-console/vertx-websocket.json         |  1 +
 .../java/org/apache/camel/spi/annotations/DevConsole.java     |  8 ++++++++
 .../META-INF/org/apache/camel/dev-console/activity.json       |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/api.json  |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/bean.json |  1 +
 .../META-INF/org/apache/camel/dev-console/blocked.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/browse.json         |  1 +
 .../org/apache/camel/dev-console/circuit-breaker.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/consumer.json       |  1 +
 .../META-INF/org/apache/camel/dev-console/context.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/datasource.json     |  1 +
 .../META-INF/org/apache/camel/dev-console/debug.json          |  1 +
 .../META-INF/org/apache/camel/dev-console/endpoint.json       |  1 +
 .../META-INF/org/apache/camel/dev-console/errors.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/eval-language.json  |  1 +
 .../META-INF/org/apache/camel/dev-console/event.json          |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/gc.json   |  1 +
 .../META-INF/org/apache/camel/dev-console/health.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/heap-dump.json      |  1 +
 .../META-INF/org/apache/camel/dev-console/heap-histogram.json |  1 +
 .../META-INF/org/apache/camel/dev-console/inflight.json       |  1 +
 .../META-INF/org/apache/camel/dev-console/internal-tasks.json |  1 +
 .../META-INF/org/apache/camel/dev-console/java-security.json  |  1 +
 .../org/apache/camel/dev-console/jfr-memory-leak.json         |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/jvm.json  |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/log.json  |  1 +
 .../META-INF/org/apache/camel/dev-console/memory.json         |  1 +
 .../org/apache/camel/dev-console/message-history.json         |  1 +
 .../org/apache/camel/dev-console/processor-detail.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/processor.json      |  1 +
 .../META-INF/org/apache/camel/dev-console/producer.json       |  1 +
 .../META-INF/org/apache/camel/dev-console/properties.json     |  1 +
 .../META-INF/org/apache/camel/dev-console/receive.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/reload.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/rest-spec.json      |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/rest.json |  1 +
 .../org/apache/camel/dev-console/route-controller.json        |  1 +
 .../META-INF/org/apache/camel/dev-console/route-dump.json     |  1 +
 .../META-INF/org/apache/camel/dev-console/route-group.json    |  1 +
 .../org/apache/camel/dev-console/route-structure.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/route-topology.json |  1 +
 .../META-INF/org/apache/camel/dev-console/route.json          |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/send.json |  1 +
 .../META-INF/org/apache/camel/dev-console/service.json        |  1 +
 .../org/apache/camel/dev-console/simple-language.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/source.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/sql-query.json      |  1 +
 .../META-INF/org/apache/camel/dev-console/sql-trace.json      |  1 +
 .../org/apache/camel/dev-console/startup-recorder.json        |  1 +
 .../org/apache/camel/dev-console/system-properties.json       |  1 +
 .../META-INF/org/apache/camel/dev-console/thread.json         |  1 +
 .../resources/META-INF/org/apache/camel/dev-console/top.json  |  1 +
 .../META-INF/org/apache/camel/dev-console/trace.json          |  1 +
 .../META-INF/org/apache/camel/dev-console/transformers.json   |  1 +
 .../org/apache/camel/dev-console/type-converters.json         |  1 +
 .../META-INF/org/apache/camel/dev-console/variables.json      |  1 +
 .../java/org/apache/camel/impl/console/DebugDevConsole.java   |  7 +------
 .../org/apache/camel/impl/console/EvalLanguageDevConsole.java |  8 ++------
 .../org/apache/camel/impl/console/HeapDumpDevConsole.java     |  7 +------
 .../apache/camel/impl/console/JfrMemoryLeakDevConsole.java    |  7 +------
 .../org/apache/camel/impl/console/ProcessorDevConsole.java    |  7 +------
 .../java/org/apache/camel/impl/console/ReceiveDevConsole.java |  8 ++------
 .../java/org/apache/camel/impl/console/ReloadDevConsole.java  |  7 +------
 .../java/org/apache/camel/impl/console/RouteDevConsole.java   |  7 +------
 .../org/apache/camel/impl/console/RouteGroupDevConsole.java   |  7 +------
 .../java/org/apache/camel/impl/console/SendDevConsole.java    |  7 +------
 .../org/apache/camel/impl/console/SqlQueryDevConsole.java     |  8 ++------
 .../java/org/apache/camel/impl/console/TraceDevConsole.java   |  7 +------
 .../META-INF/org/apache/camel/dev-console/bean-model.json     |  1 +
 .../org/apache/camel/dev-console/main-configuration.json      |  1 +
 .../org/apache/camel/support/console/AbstractDevConsole.java  |  7 +++++++
 .../META-INF/org/apache/camel/dev-console/jbang.json          |  1 +
 .../META-INF/org/apache/camel/dev-console/source-dir.json     |  1 +
 .../org/apache/camel/dev-console/dependency-downloader.json   |  1 +
 .../apache/camel/maven/packaging/GenerateDevConsoleMojo.java  | 11 +++++++++++
 .../java/org/apache/camel/spi/annotations/DevConsole.java     |  8 ++++++++
 99 files changed, 132 insertions(+), 78 deletions(-)

diff --git 
a/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json
 
b/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json
index e3831053d358..cf9b99383714 100644
--- 
a/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json
+++ 
b/catalog/camel-catalog-console/src/generated/resources/META-INF/org/apache/camel/dev-console/catalog.json
@@ -6,6 +6,7 @@
     "title": "Catalog",
     "description": "Information about used Camel artifacts",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.catalog.console.CatalogConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-catalog-console",
diff --git 
a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json
 
b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json
index b97e902cc923..d0f70871f2a5 100644
--- 
a/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json
+++ 
b/components/camel-aws/camel-aws-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/aws-secrets.json
@@ -6,6 +6,7 @@
     "title": "AWS Secrets",
     "description": "AWS Secrets Manager",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.aws.secretsmanager.SecretsDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-aws-secrets-manager",
diff --git 
a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json
 
b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json
index e9be83caf8a8..ce0e95b664b0 100644
--- 
a/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json
+++ 
b/components/camel-aws/camel-aws2-s3/src/generated/resources/META-INF/org/apache/camel/dev-console/aws2-s3.json
@@ -6,6 +6,7 @@
     "title": "AWS S3",
     "description": "AWS S3 Consumer",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.aws2.s3.AWS2S3Console",
     "groupId": "org.apache.camel",
     "artifactId": "camel-aws2-s3",
diff --git 
a/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json
 
b/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json
index 628682ac5f97..a5054e19e5c4 100644
--- 
a/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json
+++ 
b/components/camel-azure/camel-azure-key-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/azure-secrets.json
@@ -6,6 +6,7 @@
     "title": "Azure Key Vault Secrets",
     "description": "Azure Key Vault Secret Manager",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.azure.key.vault.AzureKeyVaultManagerDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-azure-key-vault",
diff --git 
a/components/camel-diagram/src/generated/resources/META-INF/org/apache/camel/dev-console/route-diagram.json
 
b/components/camel-diagram/src/generated/resources/META-INF/org/apache/camel/dev-console/route-diagram.json
index 8b826a92455e..ead0c381c918 100644
--- 
a/components/camel-diagram/src/generated/resources/META-INF/org/apache/camel/dev-console/route-diagram.json
+++ 
b/components/camel-diagram/src/generated/resources/META-INF/org/apache/camel/dev-console/route-diagram.json
@@ -6,6 +6,7 @@
     "title": "Route Diagram",
     "description": "Visual route diagrams",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.diagram.DiagramDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-diagram",
diff --git 
a/components/camel-ftp/src/generated/resources/META-INF/org/apache/camel/dev-console/sftp.json
 
b/components/camel-ftp/src/generated/resources/META-INF/org/apache/camel/dev-console/sftp.json
index cba9575de6f1..655a877681b5 100644
--- 
a/components/camel-ftp/src/generated/resources/META-INF/org/apache/camel/dev-console/sftp.json
+++ 
b/components/camel-ftp/src/generated/resources/META-INF/org/apache/camel/dev-console/sftp.json
@@ -6,6 +6,7 @@
     "title": "SFTP",
     "description": "Secure FTP using JSCH",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.file.remote.SftpDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-ftp",
diff --git 
a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json
 
b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json
index 2db63f44d2db..6c705b200b9d 100644
--- 
a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json
+++ 
b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/gcp-secrets.json
@@ -6,6 +6,7 @@
     "title": "GCP Secrets",
     "description": "GCP Secret Manager",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.google.secret.manager.GoogleSecretManagerDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-google-secret-manager",
diff --git 
a/components/camel-groovy/src/generated/resources/META-INF/org/apache/camel/dev-console/groovy.json
 
b/components/camel-groovy/src/generated/resources/META-INF/org/apache/camel/dev-console/groovy.json
index 513ef16d49cc..078f567341ee 100644
--- 
a/components/camel-groovy/src/generated/resources/META-INF/org/apache/camel/dev-console/groovy.json
+++ 
b/components/camel-groovy/src/generated/resources/META-INF/org/apache/camel/dev-console/groovy.json
@@ -6,6 +6,7 @@
     "title": "Groovy",
     "description": "Groovy Language",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.language.groovy.GroovyDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-groovy",
diff --git 
a/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/hashicorp-secrets.json
 
b/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/hashicorp-secrets.json
index 47e2800607a0..bc159fc67b39 100644
--- 
a/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/hashicorp-secrets.json
+++ 
b/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/dev-console/hashicorp-secrets.json
@@ -6,6 +6,7 @@
     "title": "HashiCorp Secrets",
     "description": "HashiCorp Vault Secrets",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.hashicorp.vault.SecretsDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-hashicorp-vault",
diff --git 
a/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/ibm-secrets.json
 
b/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/ibm-secrets.json
index 33a3d8558138..5235512e6bbf 100644
--- 
a/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/ibm-secrets.json
+++ 
b/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/dev-console/ibm-secrets.json
@@ -6,6 +6,7 @@
     "title": "IBM Secrets",
     "description": "IBM Secrets Manager",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.ibm.secrets.manager.SecretsDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-ibm-secrets-manager",
diff --git 
a/components/camel-jfr/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr.json
 
b/components/camel-jfr/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr.json
index 8fc43cff3864..fddf05f6a74b 100644
--- 
a/components/camel-jfr/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr.json
+++ 
b/components/camel-jfr/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr.json
@@ -6,6 +6,7 @@
     "title": "JFR Runtime Instrumentation",
     "description": "Status and live control of camel-jfr runtime 
instrumentation",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.runtime.jfr.CamelJfrDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-jfr",
diff --git 
a/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java
 
b/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java
index 7b57a2cdc4ef..8dff129be7a7 100644
--- 
a/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java
+++ 
b/components/camel-jfr/src/main/java/org/apache/camel/runtime/jfr/CamelJfrDevConsole.java
@@ -49,7 +49,7 @@ import org.apache.camel.util.json.JsonObject;
  * @since 4.22
  */
 @DevConsole(name = "jfr", displayName = "JFR Runtime Instrumentation",
-            description = "Status and live control of camel-jfr runtime 
instrumentation")
+            description = "Status and live control of camel-jfr runtime 
instrumentation", readOnly = false)
 public class CamelJfrDevConsole extends AbstractDevConsole {
 
     @Metadata(label = "query", description = "Command to perform", javaType = 
"java.lang.String",
@@ -83,11 +83,6 @@ public class CamelJfrDevConsole extends AbstractDevConsole {
               "Status and live control of camel-jfr runtime instrumentation");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     private boolean isInstrumentationRegistered() {
         CamelContext ctx = getCamelContext();
         if (ctx == null) {
diff --git 
a/components/camel-kafka/src/generated/resources/META-INF/org/apache/camel/dev-console/kafka.json
 
b/components/camel-kafka/src/generated/resources/META-INF/org/apache/camel/dev-console/kafka.json
index d00ed37bbd02..a62ec0cceef8 100644
--- 
a/components/camel-kafka/src/generated/resources/META-INF/org/apache/camel/dev-console/kafka.json
+++ 
b/components/camel-kafka/src/generated/resources/META-INF/org/apache/camel/dev-console/kafka.json
@@ -6,6 +6,7 @@
     "title": "Kafka",
     "description": "Apache Kafka",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.kafka.KafkaDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-kafka",
diff --git 
a/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-configmaps.json
 
b/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-configmaps.json
index a6aad11d4626..56d3db2e6a1d 100644
--- 
a/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-configmaps.json
+++ 
b/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-configmaps.json
@@ -6,6 +6,7 @@
     "title": "Kubernetes Config Maps",
     "description": "Kubernetes Cluster Config Maps",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.kubernetes.config_maps.vault.ConfigmapsDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-kubernetes",
diff --git 
a/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-secrets.json
 
b/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-secrets.json
index 6c054feee0c0..9bffab3a5997 100644
--- 
a/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-secrets.json
+++ 
b/components/camel-kubernetes/src/generated/resources/META-INF/org/apache/camel/dev-console/kubernetes-secrets.json
@@ -6,6 +6,7 @@
     "title": "Kubernetes Secrets",
     "description": "Kubernetes Cluster Secrets",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.kubernetes.secrets.vault.SecretsDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-kubernetes",
diff --git 
a/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json
 
b/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json
index cf7ccb455e6c..1b7f0790f5a9 100644
--- 
a/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json
+++ 
b/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/dev-console/micrometer.json
@@ -6,6 +6,7 @@
     "title": "Micrometer",
     "description": "Display runtime metrics",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.micrometer.MicrometerConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-micrometer",
diff --git 
a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json
 
b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json
index a0f18c4e1045..86d20f11be29 100644
--- 
a/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json
+++ 
b/components/camel-microprofile/camel-microprofile-fault-tolerance/src/generated/resources/META-INF/org/apache/camel/dev-console/fault-tolerance.json
@@ -6,6 +6,7 @@
     "title": "MicroProfile Circuit Breaker",
     "description": "Display circuit breaker information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.microprofile.faulttolerance.FaultToleranceConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-microprofile-fault-tolerance",
diff --git 
a/components/camel-opentelemetry2/src/generated/resources/META-INF/org/apache/camel/dev-console/opentelemetry.json
 
b/components/camel-opentelemetry2/src/generated/resources/META-INF/org/apache/camel/dev-console/opentelemetry.json
index 2ad91bca36e1..f1825f1e26a8 100644
--- 
a/components/camel-opentelemetry2/src/generated/resources/META-INF/org/apache/camel/dev-console/opentelemetry.json
+++ 
b/components/camel-opentelemetry2/src/generated/resources/META-INF/org/apache/camel/dev-console/opentelemetry.json
@@ -6,6 +6,7 @@
     "title": "OpenTelemetry Spans",
     "description": "OpenTelemetry span data captured in dev mode",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.opentelemetry2.OpenTelemetryDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-opentelemetry2",
diff --git 
a/components/camel-platform-http-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-http-server.json
 
b/components/camel-platform-http-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-http-server.json
index c472ad472389..2a601f4e1a6e 100644
--- 
a/components/camel-platform-http-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-http-server.json
+++ 
b/components/camel-platform-http-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-http-server.json
@@ -6,6 +6,7 @@
     "title": "Main HTTP Server",
     "description": "Camel Main HTTP Server",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.platform.http.main.MainHttpServerDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-platform-http-main",
diff --git 
a/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json
 
b/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json
index d07aecc32730..373be8a7e29b 100644
--- 
a/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json
+++ 
b/components/camel-platform-http/src/generated/resources/META-INF/org/apache/camel/dev-console/platform-http.json
@@ -6,6 +6,7 @@
     "title": "Platform HTTP",
     "description": "Embedded HTTP Server",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.platform.http.PlatformHttpConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-platform-http",
diff --git 
a/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json
 
b/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json
index f97ae20916f6..d2d4c1561783 100644
--- 
a/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json
+++ 
b/components/camel-quartz/src/generated/resources/META-INF/org/apache/camel/dev-console/quartz.json
@@ -6,6 +6,7 @@
     "title": "Quartz",
     "description": "Quartz Scheduler",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.quartz.QuartzConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-quartz",
diff --git 
a/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json
 
b/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json
index 5ed2e3cccfb2..e0abe6cb770d 100644
--- 
a/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json
+++ 
b/components/camel-resilience4j/src/generated/resources/META-INF/org/apache/camel/dev-console/resilience4j.json
@@ -6,6 +6,7 @@
     "title": "Resilience Circuit Breaker",
     "description": "Display circuit breaker information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.resilience4j.ResilienceConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-resilience4j",
diff --git 
a/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json
 
b/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json
index 549225c95dcd..82a20938adb1 100644
--- 
a/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json
+++ 
b/components/camel-stub/src/generated/resources/META-INF/org/apache/camel/dev-console/stub.json
@@ -6,6 +6,7 @@
     "title": "Stub",
     "description": "Browse messages on stub endpoints",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.component.stub.StubConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-stub",
diff --git 
a/components/camel-vertx/camel-vertx-websocket/src/generated/resources/META-INF/org/apache/camel/dev-console/vertx-websocket.json
 
b/components/camel-vertx/camel-vertx-websocket/src/generated/resources/META-INF/org/apache/camel/dev-console/vertx-websocket.json
index a204e5a42b15..aab4753de9d6 100644
--- 
a/components/camel-vertx/camel-vertx-websocket/src/generated/resources/META-INF/org/apache/camel/dev-console/vertx-websocket.json
+++ 
b/components/camel-vertx/camel-vertx-websocket/src/generated/resources/META-INF/org/apache/camel/dev-console/vertx-websocket.json
@@ -6,6 +6,7 @@
     "title": "Vert.x WebSocket",
     "description": "Vert.x WebSocket consumer details",
     "deprecated": false,
+    "readOnly": true,
     "javaType": 
"org.apache.camel.component.vertx.websocket.VertxWebsocketDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-vertx-websocket",
diff --git 
a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
 
b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
index 337360203da4..1f93908cac86 100644
--- 
a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
+++ 
b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/DevConsole.java
@@ -51,4 +51,12 @@ public @interface DevConsole {
      */
     String description();
 
+    /**
+     * Whether this console is read-only (safe, and does not change any 
runtime state).
+     * <p/>
+     * Consoles that mutate state (such as starting/stopping a route, sending 
a message, or triggering a heap dump) must
+     * set this to {@code false}.
+     */
+    boolean readOnly() default true;
+
 }
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/activity.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/activity.json
index fd0b049476fd..7139adb66b3e 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/activity.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/activity.json
@@ -6,6 +6,7 @@
     "title": "Camel Activity",
     "description": "Recent completed exchange activity",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ActivityDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/api.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/api.json
index 815d84495893..9fa8ce489e4f 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/api.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/api.json
@@ -6,6 +6,7 @@
     "title": "API",
     "description": "OpenAPI specification for the dev console API",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ApiDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json
index f281d19180be..379d778fcd71 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/bean.json
@@ -6,6 +6,7 @@
     "title": "Bean",
     "description": "Displays Java beans from the registry",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.BeanDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json
index 47e637c0bc53..da11ffd63cae 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/blocked.json
@@ -6,6 +6,7 @@
     "title": "Blocked Exchanges",
     "description": "Display blocked exchanges",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.BlockedConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/browse.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/browse.json
index 35d4431083cd..1baf361f8071 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/browse.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/browse.json
@@ -6,6 +6,7 @@
     "title": "Browse",
     "description": "Browse pending messages on Camel components",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.BrowseDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json
index 2c735d14513a..5426d9653234 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/circuit-breaker.json
@@ -6,6 +6,7 @@
     "title": "Circuit Breaker",
     "description": "Display circuit breaker information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.CircuitBreakerDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json
index e5aa0f91d75c..b846c934a55f 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/consumer.json
@@ -6,6 +6,7 @@
     "title": "Consumers",
     "description": "Display information about Camel consumers",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ConsumerDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json
index b55bdbc2c90e..aa9c21003630 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/context.json
@@ -6,6 +6,7 @@
     "title": "CamelContext",
     "description": "Overall information about the CamelContext",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ContextDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/datasource.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/datasource.json
index ac0e5983d0ea..2ac439d18181 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/datasource.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/datasource.json
@@ -6,6 +6,7 @@
     "title": "DataSource",
     "description": "Displays DataSource connection pool metrics",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.DataSourceDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json
index 92eab4e852a8..04b95b63dd64 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/debug.json
@@ -6,6 +6,7 @@
     "title": "Debug",
     "description": "Camel route debugger",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.DebugDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json
index 4e2f6e662a06..a8b4fb61bd92 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/endpoint.json
@@ -6,6 +6,7 @@
     "title": "Endpoints",
     "description": "Endpoint Registry information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.EndpointDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/errors.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/errors.json
index 38d6d50322f6..1522e583d3ea 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/errors.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/errors.json
@@ -6,6 +6,7 @@
     "title": "Error Registry",
     "description": "Display captured routing errors",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ErrorRegistryConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/eval-language.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/eval-language.json
index 4f32f0a2c412..0086f1b21082 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/eval-language.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/eval-language.json
@@ -6,6 +6,7 @@
     "title": "Evaluate Language",
     "description": "Evaluate Language and display result",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.EvalLanguageDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json
index 28836520fd22..1fc4fbdce8eb 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/event.json
@@ -6,6 +6,7 @@
     "title": "Camel Events",
     "description": "The most recent Camel events",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.EventConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json
index 83df44fdfa99..66e21ec22064 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/gc.json
@@ -6,6 +6,7 @@
     "title": "Garbage Collector",
     "description": "Displays Garbage Collector information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.GarbageCollectorDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json
index 32bbfc1c5c04..e5083a15e3e5 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/health.json
@@ -6,6 +6,7 @@
     "title": "Health Check",
     "description": "Health Check Status",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.HealthDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-dump.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-dump.json
index a430cc1420ee..781c565a9d80 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-dump.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-dump.json
@@ -6,6 +6,7 @@
     "title": "Heap Dump",
     "description": "Write a heap dump (.hprof) file for deep memory analysis",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.HeapDumpDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-histogram.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-histogram.json
index 2353f33b9456..69148a67e464 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-histogram.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/heap-histogram.json
@@ -6,6 +6,7 @@
     "title": "Heap Histogram",
     "description": "Displays class-level heap memory usage",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.HeapHistogramDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json
index d40ea6b4a80e..b758445cf916 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/inflight.json
@@ -6,6 +6,7 @@
     "title": "Inflight Exchanges",
     "description": "Display inflight exchanges",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.InflightConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/internal-tasks.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/internal-tasks.json
index 869038a890d6..0fb582f03c1e 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/internal-tasks.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/internal-tasks.json
@@ -6,6 +6,7 @@
     "title": "Internal Tasks",
     "description": "Display information about internal tasks",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.TaskRegistryDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json
index a26a922dfa11..c5877f34274c 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/java-security.json
@@ -6,6 +6,7 @@
     "title": "Java Security",
     "description": "Displays Java Security (JSSE) information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.JavaSecurityDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr-memory-leak.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr-memory-leak.json
index 9060eac5e162..d6dd0387587f 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr-memory-leak.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jfr-memory-leak.json
@@ -6,6 +6,7 @@
     "title": "JFR Memory Leak",
     "description": "JFR-based old object sampling for memory leak diagnosis",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.JfrMemoryLeakDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json
index 4d8cd2789763..c4d5d32567db 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jvm.json
@@ -6,6 +6,7 @@
     "title": "JVM",
     "description": "Displays JVM information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.JvmDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json
index 15bd74e81283..30f93775f196 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/log.json
@@ -6,6 +6,7 @@
     "title": "Log",
     "description": "Logging framework",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.LogDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json
index 9f7d8b403df7..0bd7215dde80 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/memory.json
@@ -6,6 +6,7 @@
     "title": "JVM Memory",
     "description": "Displays JVM memory information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.MemoryDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/message-history.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/message-history.json
index e950b50cd95c..cb4f9e2a0fb6 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/message-history.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/message-history.json
@@ -6,6 +6,7 @@
     "title": "Message History",
     "description": "History of latest completed exchange",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.MessageHistoryDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor-detail.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor-detail.json
index 8e22af1c1968..ebf8ce65ad2d 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor-detail.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor-detail.json
@@ -6,6 +6,7 @@
     "title": "Processor Detail",
     "description": "Show configured options for all processors in a route",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ProcessorDetailDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor.json
index c92c77296a08..4187206fd03d 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/processor.json
@@ -6,6 +6,7 @@
     "title": "Processor",
     "description": "Processor information",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.ProcessorDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/producer.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/producer.json
index dbac98c57280..865f49fa969e 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/producer.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/producer.json
@@ -6,6 +6,7 @@
     "title": "Producers",
     "description": "Display information about Camel producers",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ProducerDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json
index 8c661d342d80..8a70c7b3e1f6 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/properties.json
@@ -6,6 +6,7 @@
     "title": "Properties",
     "description": "Displays the properties loaded by Camel",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.PropertiesDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/receive.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/receive.json
index faa96aca845f..d6eef0033fb7 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/receive.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/receive.json
@@ -6,6 +6,7 @@
     "title": "Camel Receive",
     "description": "Consume messages from endpoints",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.ReceiveDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json
index 48b8737e0b16..9a9ac8798415 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/reload.json
@@ -6,6 +6,7 @@
     "title": "Reload",
     "description": "Console for reloading running Camel",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.ReloadDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest-spec.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest-spec.json
index 46ddad46dcc1..e9f5e8eaa235 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest-spec.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest-spec.json
@@ -6,6 +6,7 @@
     "title": "Rest Spec",
     "description": "OpenAPI specification content for contract-first REST 
services",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.RestSpecDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest.json
index 7d237debce0c..865442fdcdea 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/rest.json
@@ -6,6 +6,7 @@
     "title": "Rest",
     "description": "Rest DSL Registry information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.RestDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json
index 986252e5ca52..2e26709b7178 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-controller.json
@@ -6,6 +6,7 @@
     "title": "Route Controller",
     "description": "Route controller information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.RouteControllerConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json
index 3795188ace1a..b456dd2bcfa1 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-dump.json
@@ -6,6 +6,7 @@
     "title": "Route Dump",
     "description": "Dump route in XML, YAML, or Java DSL format",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.RouteDumpDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-group.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-group.json
index c2fd5b8c8502..385cdd8cd957 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-group.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-group.json
@@ -6,6 +6,7 @@
     "title": "Route Group",
     "description": "Route Group information",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.RouteGroupDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-structure.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-structure.json
index cad3cda9403f..ea33d5983a20 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-structure.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-structure.json
@@ -6,6 +6,7 @@
     "title": "Route Structure",
     "description": "Dump route structure",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.RouteStructureDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-topology.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-topology.json
index 2a5a27807324..7986ba7bddbf 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-topology.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route-topology.json
@@ -6,6 +6,7 @@
     "title": "Route Topology",
     "description": "Route topology showing inter-route connections",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.RouteTopologyDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json
index 36f75cd52f6d..555a1a0dd5c1 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/route.json
@@ -6,6 +6,7 @@
     "title": "Route",
     "description": "Route information",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.RouteDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/send.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/send.json
index a15a608be3f5..0900fa44626c 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/send.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/send.json
@@ -6,6 +6,7 @@
     "title": "Camel Send",
     "description": "Send messages to endpoints",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.SendDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/service.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/service.json
index 33138f8dd4c9..b56cf0641d0c 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/service.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/service.json
@@ -6,6 +6,7 @@
     "title": "Services",
     "description": "Services used for network communication with clients",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ServiceDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/simple-language.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/simple-language.json
index 07ebd2626447..3c84e7ff2202 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/simple-language.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/simple-language.json
@@ -6,6 +6,7 @@
     "title": "Simple Language",
     "description": "Display simple language details",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.SimpleLanguageDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json
index b641917712e6..824a1f09535b 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source.json
@@ -6,6 +6,7 @@
     "title": "Source",
     "description": "Dump route source code",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.SourceDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-query.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-query.json
index bde872c3cde3..131e314fd5b8 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-query.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-query.json
@@ -6,6 +6,7 @@
     "title": "SQL Query",
     "description": "Execute SQL queries on DataSource beans",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.SqlQueryDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-trace.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-trace.json
index 43ee6575ec41..1b2c4a040bfd 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-trace.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/sql-trace.json
@@ -6,6 +6,7 @@
     "title": "SQL Trace",
     "description": "Trace SQL query executions",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.SqlTraceDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json
index 83bbb40681e9..b258f1962d36 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/startup-recorder.json
@@ -6,6 +6,7 @@
     "title": "Startup Recorder",
     "description": "Starting recording information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.StartupRecorderDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json
index 972f953ae340..d8f996856e7e 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/system-properties.json
@@ -6,6 +6,7 @@
     "title": "System Properties",
     "description": "Displays Java System Properties",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.SystemPropertiesDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json
index 4b9008704da5..7ef081e60cf5 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/thread.json
@@ -6,6 +6,7 @@
     "title": "Thread",
     "description": "Displays JVM Threads information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.ThreadDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json
index f6d95b92dd95..58e79ae88399 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/top.json
@@ -6,6 +6,7 @@
     "title": "Top Routes",
     "description": "Display the top routes",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.TopDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json
index e9814d31eb7a..9edb3eca5601 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/trace.json
@@ -6,6 +6,7 @@
     "title": "Camel Tracing",
     "description": "Trace routed messages",
     "deprecated": false,
+    "readOnly": false,
     "javaType": "org.apache.camel.impl.console.TraceDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json
index fae346548208..e5490278b2fe 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/transformers.json
@@ -6,6 +6,7 @@
     "title": "Data Type Transformers",
     "description": "Data-type transformer information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.TransformerConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json
index fbc09620bc17..45f5ea1da158 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/type-converters.json
@@ -6,6 +6,7 @@
     "title": "Type Converters",
     "description": "Camel Type Converter information",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.TypeConverterConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json
 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json
index d73b94b813c7..0f2c9c059fa8 100644
--- 
a/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json
+++ 
b/core/camel-console/src/generated/resources/META-INF/org/apache/camel/dev-console/variables.json
@@ -6,6 +6,7 @@
     "title": "Variables",
     "description": "Displays variables",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.impl.console.VariablesDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-console",
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
index decaa2f7e681..1d726e7d911f 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/DebugDevConsole.java
@@ -41,7 +41,7 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole(name = "debug", description = "Camel route debugger")
+@DevConsole(name = "debug", description = "Camel route debugger", readOnly = 
false)
 public class DebugDevConsole extends AbstractDevConsole {
 
     @Metadata(label = "query", description = "Action command to execute on the 
debugger", javaType = "java.lang.String")
@@ -61,11 +61,6 @@ public class DebugDevConsole extends AbstractDevConsole {
         super("camel", "debug", "Debug", "Camel route debugger");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         String command = optionString(options, COMMAND);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/EvalLanguageDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/EvalLanguageDevConsole.java
index aed61a0f7e2d..0dd14f26f844 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/EvalLanguageDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/EvalLanguageDevConsole.java
@@ -28,7 +28,8 @@ import org.apache.camel.support.MessageHelper;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole(name = "eval-language", displayName = "Evaluate Language", 
description = "Evaluate Language and display result")
+@DevConsole(name = "eval-language", displayName = "Evaluate Language", 
description = "Evaluate Language and display result",
+            readOnly = false)
 public class EvalLanguageDevConsole extends AbstractDevConsole {
 
     @Metadata(label = "query", description = "The language to use", javaType = 
"java.lang.String", defaultValue = "simple")
@@ -55,11 +56,6 @@ public class EvalLanguageDevConsole extends 
AbstractDevConsole {
         super("camel", "eval-language", "Evaluate Language", "Evaluate 
Language and display result");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         StringBuilder sb = new StringBuilder();
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/HeapDumpDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/HeapDumpDevConsole.java
index 5f208ba50b7d..9280c7a397a3 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/HeapDumpDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/HeapDumpDevConsole.java
@@ -33,7 +33,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonObject;
 
 @DevConsole(name = "heap-dump", displayName = "Heap Dump",
-            description = "Write a heap dump (.hprof) file for deep memory 
analysis")
+            description = "Write a heap dump (.hprof) file for deep memory 
analysis", readOnly = false)
 @Configurer(extended = true)
 public class HeapDumpDevConsole extends AbstractDevConsole {
 
@@ -51,11 +51,6 @@ public class HeapDumpDevConsole extends AbstractDevConsole {
         super("jvm", "heap-dump", "Heap Dump", "Write a heap dump (.hprof) 
file for deep memory analysis");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         JsonObject json = doCallJson(options);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/JfrMemoryLeakDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/JfrMemoryLeakDevConsole.java
index 1ebdcdcbb319..0c8ffc94c33a 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/JfrMemoryLeakDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/JfrMemoryLeakDevConsole.java
@@ -52,7 +52,7 @@ import org.slf4j.LoggerFactory;
  * chains back to GC roots, enabling memory leak diagnosis.
  */
 @DevConsole(name = "jfr-memory-leak", displayName = "JFR Memory Leak",
-            description = "JFR-based old object sampling for memory leak 
diagnosis")
+            description = "JFR-based old object sampling for memory leak 
diagnosis", readOnly = false)
 @Configurer(extended = true)
 public class JfrMemoryLeakDevConsole extends AbstractDevConsole {
 
@@ -99,11 +99,6 @@ public class JfrMemoryLeakDevConsole extends 
AbstractDevConsole {
               "JFR-based old object sampling for memory leak diagnosis");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         JsonObject json = doCallJson(options);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ProcessorDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ProcessorDevConsole.java
index dd830b513a8a..f65f956013eb 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ProcessorDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ProcessorDevConsole.java
@@ -42,7 +42,7 @@ import org.apache.camel.util.json.Jsoner;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@DevConsole(name = "processor", description = "Processor information")
+@DevConsole(name = "processor", description = "Processor information", 
readOnly = false)
 public class ProcessorDevConsole extends AbstractDevConsole {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(ProcessorDevConsole.class);
@@ -64,11 +64,6 @@ public class ProcessorDevConsole extends AbstractDevConsole {
         super("camel", "processor", "Processor", "Processor information");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         String action = optionString(options, ACTION);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java
index 32d935674459..776f836041ab 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReceiveDevConsole.java
@@ -47,7 +47,8 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole(name = "receive", displayName = "Camel Receive", description = 
"Consume messages from endpoints")
+@DevConsole(name = "receive", displayName = "Camel Receive", description = 
"Consume messages from endpoints",
+            readOnly = false)
 @Configurer(extended = true)
 public class ReceiveDevConsole extends AbstractDevConsole {
 
@@ -85,11 +86,6 @@ public class ReceiveDevConsole extends AbstractDevConsole {
         super("camel", "receive", "Camel Receive", "Consume messages from 
endpoints");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     public int getCapacity() {
         return capacity;
     }
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
index 582badf694e2..995226c32eb1 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/ReloadDevConsole.java
@@ -31,7 +31,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole(name = "reload", description = "Console for reloading running 
Camel")
+@DevConsole(name = "reload", description = "Console for reloading running 
Camel", readOnly = false)
 public class ReloadDevConsole extends AbstractDevConsole {
 
     @Metadata(label = "query", description = "Option to trigger reloading", 
javaType = "java.lang.Boolean",
@@ -49,11 +49,6 @@ public class ReloadDevConsole extends AbstractDevConsole {
         super("camel", "reload", "Reload", "Console for reloading running 
Camel");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     protected String doCallText(Map<String, Object> options) {
         boolean trigger = optionBoolean(options, RELOAD, false);
         boolean wait = optionBoolean(options, RELOAD_WAIT, false);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
index 826b1a8514f4..62fe9db3d0fc 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
@@ -45,7 +45,7 @@ import org.apache.camel.util.json.JsonObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@DevConsole(name = "route", description = "Route information")
+@DevConsole(name = "route", description = "Route information", readOnly = 
false)
 public class RouteDevConsole extends AbstractDevConsole {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(RouteDevConsole.class);
@@ -70,11 +70,6 @@ public class RouteDevConsole extends AbstractDevConsole {
         super("camel", "route", "Route", "Route information");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         String action = optionString(options, ACTION);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteGroupDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteGroupDevConsole.java
index b05e1de71819..5c0180d9ce34 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteGroupDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteGroupDevConsole.java
@@ -43,7 +43,7 @@ import org.apache.camel.util.json.JsonObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@DevConsole(name = "route-group", description = "Route Group information")
+@DevConsole(name = "route-group", description = "Route Group information", 
readOnly = false)
 public class RouteGroupDevConsole extends AbstractDevConsole {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(RouteGroupDevConsole.class);
@@ -62,11 +62,6 @@ public class RouteGroupDevConsole extends AbstractDevConsole 
{
         super("camel", "route-group", "Route Group", "Route Group 
information");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         String action = optionString(options, ACTION);
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/SendDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/SendDevConsole.java
index c75f6b9db08b..d9aeeaa1ffce 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/SendDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/SendDevConsole.java
@@ -43,7 +43,7 @@ import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole(name = "send", displayName = "Camel Send", description = "Send 
messages to endpoints")
+@DevConsole(name = "send", displayName = "Camel Send", description = "Send 
messages to endpoints", readOnly = false)
 @Configurer(extended = true)
 public class SendDevConsole extends AbstractDevConsole {
 
@@ -87,11 +87,6 @@ public class SendDevConsole extends AbstractDevConsole {
         super("camel", "send", "Camel Send", "Send messages to endpoints");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     @Override
     protected void doInit() throws Exception {
         super.doInit();
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/SqlQueryDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/SqlQueryDevConsole.java
index 1b92020f9021..1a6ba861c709 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/SqlQueryDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/SqlQueryDevConsole.java
@@ -40,7 +40,8 @@ import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.camel.util.json.Jsoner;
 
-@DevConsole(name = "sql-query", displayName = "SQL Query", description = 
"Execute SQL queries on DataSource beans")
+@DevConsole(name = "sql-query", displayName = "SQL Query", description = 
"Execute SQL queries on DataSource beans",
+            readOnly = false)
 @Configurer(extended = true)
 public class SqlQueryDevConsole extends AbstractDevConsole {
 
@@ -88,11 +89,6 @@ public class SqlQueryDevConsole extends AbstractDevConsole {
         super("camel", "sql-query", "SQL Query", "Execute SQL queries on 
DataSource beans");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     public int getDefaultMaxRows() {
         return defaultMaxRows;
     }
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
index 7782ea4ed879..eb59c10534d3 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/TraceDevConsole.java
@@ -29,7 +29,7 @@ import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
 
-@DevConsole(name = "trace", displayName = "Camel Tracing", description = 
"Trace routed messages")
+@DevConsole(name = "trace", displayName = "Camel Tracing", description = 
"Trace routed messages", readOnly = false)
 @Configurer(extended = true)
 public class TraceDevConsole extends AbstractDevConsole {
 
@@ -51,11 +51,6 @@ public class TraceDevConsole extends AbstractDevConsole {
         super("camel", "trace", "Camel Tracing", "Trace routed messages");
     }
 
-    @Override
-    public boolean isReadOnly() {
-        return false;
-    }
-
     public int getCapacity() {
         return capacity;
     }
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/dev-console/bean-model.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/dev-console/bean-model.json
index 23840a6e83e8..6ee5e78ec5f2 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/dev-console/bean-model.json
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/dev-console/bean-model.json
@@ -6,6 +6,7 @@
     "title": "Bean Model",
     "description": "Displays beans from the DSL model",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.model.console.BeanModelDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-core-model",
diff --git 
a/core/camel-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-configuration.json
 
b/core/camel-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-configuration.json
index bcdda430dafb..35d1fc8dc0d1 100644
--- 
a/core/camel-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-configuration.json
+++ 
b/core/camel-main/src/generated/resources/META-INF/org/apache/camel/dev-console/main-configuration.json
@@ -6,6 +6,7 @@
     "title": "Main Configuration",
     "description": "Display Camel startup configuration",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.main.MainConfigurationDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-main",
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
index bfe752d92475..ce888aa9e7b0 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
@@ -61,6 +61,13 @@ public abstract class AbstractDevConsole extends 
ServiceSupport implements DevCo
         return true;
     }
 
+    @Override
+    public boolean isReadOnly() {
+        org.apache.camel.spi.annotations.DevConsole ann
+                = 
getClass().getAnnotation(org.apache.camel.spi.annotations.DevConsole.class);
+        return ann == null || ann.readOnly();
+    }
+
     @Override
     public String getGroup() {
         return group;
diff --git 
a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json
 
b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json
index baaca0aeee09..616c7d091054 100644
--- 
a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json
+++ 
b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/jbang.json
@@ -6,6 +6,7 @@
     "title": "Camel CLI",
     "description": "Information about Camel CLI",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.jbang.console.JBangDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-jbang-console",
diff --git 
a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json
 
b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json
index 492f7d07826b..f7e60cfb3684 100644
--- 
a/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json
+++ 
b/dsl/camel-jbang/camel-jbang-console/src/generated/resources/META-INF/org/apache/camel/dev-console/source-dir.json
@@ -6,6 +6,7 @@
     "title": "Source Directory",
     "description": "Information about Camel CLI source files",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.jbang.console.SourceDirDevConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-jbang-console",
diff --git 
a/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json
 
b/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json
index b3ed8a6458e0..a9e68394e0d6 100644
--- 
a/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json
+++ 
b/dsl/camel-kamelet-main/src/generated/resources/META-INF/org/apache/camel/dev-console/dependency-downloader.json
@@ -6,6 +6,7 @@
     "title": "Maven Dependency Downloader",
     "description": "Displays information about dependencies downloaded at 
runtime",
     "deprecated": false,
+    "readOnly": true,
     "javaType": "org.apache.camel.main.console.DependencyDownloaderConsole",
     "groupId": "org.apache.camel",
     "artifactId": "camel-kamelet-main",
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
index 8c3fa3d24bbf..2f2c0976b70b 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateDevConsoleMojo.java
@@ -83,6 +83,7 @@ public class GenerateDevConsoleMojo extends 
AbstractGeneratorMojo {
         private String displayName;
         private String description;
         private boolean deprecated;
+        private boolean readOnly = true;
         private final List<DevConsoleOptionModel> options = new ArrayList<>();
 
         public String getClassName() {
@@ -133,6 +134,14 @@ public class GenerateDevConsoleMojo extends 
AbstractGeneratorMojo {
             this.deprecated = deprecated;
         }
 
+        public boolean isReadOnly() {
+            return readOnly;
+        }
+
+        public void setReadOnly(boolean readOnly) {
+            this.readOnly = readOnly;
+        }
+
         public List<DevConsoleOptionModel> getOptions() {
             return options;
         }
@@ -169,6 +178,7 @@ public class GenerateDevConsoleMojo extends 
AbstractGeneratorMojo {
             model.setName(annotationValue(a, "name"));
             model.setDisplayName(annotationValue(a, "displayName"));
             model.setDescription(annotationValue(a, "description"));
+            model.setReadOnly(!"false".equals(annotationValue(a, "readOnly")));
             // skip default registry
             boolean skip = "default-registry".equals(model.getName());
             if (!skip) {
@@ -228,6 +238,7 @@ public class GenerateDevConsoleMojo extends 
AbstractGeneratorMojo {
         }
         jo.put("description", model.getDescription());
         jo.put("deprecated", model.isDeprecated());
+        jo.put("readOnly", model.isReadOnly());
         jo.put("javaType", model.getClassName());
         jo.put("groupId", project.getGroupId());
         jo.put("artifactId", project.getArtifactId());
diff --git 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
index 337360203da4..1f93908cac86 100644
--- 
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
+++ 
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/DevConsole.java
@@ -51,4 +51,12 @@ public @interface DevConsole {
      */
     String description();
 
+    /**
+     * Whether this console is read-only (safe, and does not change any 
runtime state).
+     * <p/>
+     * Consoles that mutate state (such as starting/stopping a route, sending 
a message, or triggering a heap dump) must
+     * set this to {@code false}.
+     */
+    boolean readOnly() default true;
+
 }

Reply via email to