= Extension documentation
:page-aliases: extension-documentation.adoc

The documentation pages for the individual extensions are generated by the
`https://github.com/apache/camel-quarkus/blob/main/tooling/package-maven-plugin/src/main/java/org/apache/camel/quarkus/maven/UpdateExtensionDocPageMojo.java[update-extension-doc-page]` mojo
of `camel-quarkus-maven-plugin`.
The mojo is invoked from the runtime module of each extension.
The resulting AsciiDoc files are stored in
`https://github.com/apache/camel-quarkus/tree/main/docs/modules/ROOT/pages/extensions[docs/modules/ROOT/pages/extensions]`.
From there, the pages are published by Antora to the Camel website.

The pages are referenced i.e. from the xref:reference/index.adoc[List of Camel Quarkus extensions]
and from Camel Quarkus items on https://code.quarkus.io/[code.quarkus.io].

The `update-extension-doc-page` mojo merges the https://github.com/apache/camel-quarkus/blame/main/tooling/package-maven-plugin/src/main/resources/doc-templates/extension-doc-page.adoc[FreeMarker template] with the following data:

* `artifactIdBase`: the `artifactId` of the runtime module without the `camel-quarkus-` prefix.
* `jvmSince`: the `<camel.quarkus.jvmSince>` property in the runtime `pom.xml`
* `nativeSince`: the `<camel.quarkus.nativeSince>` property in the runtime `pom.xml`
* `nativeSupported`: `false` if the given extension lives under `extensions-jvm`, `true` otherwise.
* `models`: the list of Camel
   https://github.com/apache/camel/blob/main/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/ComponentModel.java[components]
   https://github.com/apache/camel/blob/main/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/DataFormatModel.java[data formats], https://github.com/apache/camel/blob/main/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java[languages], etc. the given extension delivers.
* `intro`: the first paragraph (optional); the content of `src/main/doc/intro.adoc` in the runtime module of the given extension.
  If `intro.adoc` does not exist, the `description` from the Camel Catalog is used as the first paragraph on the page.
* `usage`: Camel Quarkus specific usage (optional); the content of `src/main/doc/usage.adoc` in the runtime module of the given extension.
* `configuration`: Camel Quarkus specific configuration options (optional); the content of `src/main/doc/configuration.adoc` in the runtime module of the given extension.
* `limitations`: Camel Quarkus specific limitations (optional); the content of `src/main/doc/limitations.adoc` in the runtime module of the given extension.
