You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2022/03/16 19:12:58 UTC

[camel] 09/33: CAMEL-17792: Add doc about the message headers of camel-aws2-athena

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

nfilotto pushed a commit to branch CAMEL-17792/doc-message-headers
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4b50966916948cf34df176c584085c27722d61e0
Author: Nicolas Filotto <nf...@talend.com>
AuthorDate: Tue Mar 15 19:05:50 2022 +0100

    CAMEL-17792: Add doc about the message headers of camel-aws2-athena
---
 .../camel/component/aws2/athena/aws2-athena.json   | 24 ++++++
 .../src/main/docs/aws2-athena-component.adoc       | 91 +---------------------
 .../component/aws2/athena/Athena2Constants.java    | 83 +++++++++++++++++++-
 .../component/aws2/athena/Athena2Endpoint.java     |  3 +-
 4 files changed, 109 insertions(+), 92 deletions(-)

diff --git a/components/camel-aws/camel-aws2-athena/src/generated/resources/org/apache/camel/component/aws2/athena/aws2-athena.json b/components/camel-aws/camel-aws2-athena/src/generated/resources/org/apache/camel/component/aws2/athena/aws2-athena.json
index 053e4a0..65d93c4 100644
--- a/components/camel-aws/camel-aws2-athena/src/generated/resources/org/apache/camel/component/aws2/athena/aws2-athena.json
+++ b/components/camel-aws/camel-aws2-athena/src/generated/resources/org/apache/camel/component/aws2/athena/aws2-athena.json
@@ -53,6 +53,30 @@
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
     "clientRequestToken": { "kind": "property", "displayName": "Client Request Token", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "A unique string to ensure issues queries are idempotent. It is unlikely you will need to set this." }
   },
+  "headers": {
+    "CamelAwsAthenaOperation": { "kind": "header", "displayName": "", "group": "all", "label": "all", "required": false, "javaType": "org.apache.camel.component.aws2.athena.Athena2Operations", "enum": [ "getQueryExecution", "getQueryResults", "listQueryExecutions", "startQueryExecution" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "startQueryExecution", "description": "The operation to perform. Permitted values are getQueryExecution, [...]
+    "CamelAwsAthenaDatabase": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Athena database to use." },
+    "CamelAwsAthenaQueryExecutionId": { "kind": "header", "displayName": "", "group": "getQueryExecution getQueryResults startQueryExecution", "label": "getQueryExecution getQueryResults startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The unique ID identifying the query execution." },
+    "CamelAwsAthenaWorkGroup": { "kind": "header", "displayName": "", "group": "listQueryExecutions startQueryExecution", "label": "listQueryExecutions startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The workgroup to use for running the query." },
+    "CamelAwsAthenaNextToken": { "kind": "header", "displayName": "", "group": "getQueryResults listQueryExecutions", "label": "getQueryResults listQueryExecutions", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Pagination token to use in the case where the response from the previous request was truncated." },
+    "CamelAwsAthenaMaxResults": { "kind": "header", "displayName": "", "group": "getQueryResults listQueryExecutions", "label": "getQueryResults listQueryExecutions", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Max number of results to return for the given operation (if supported by the Athena API endpoint).\nIf not set, will use the Athena API default for the given operation." },
+    "CamelAwsAthenaIncludeTrace": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Include useful trace information at the beginning of queries as an SQL comment (prefixed with \"--\")." },
+    "CamelAwsAthenaOutputLocation": { "kind": "header", "displayName": "", "group": "getQueryExecution getQueryResults startQueryExecution", "label": "getQueryExecution getQueryResults startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The location in Amazon S3 where query results are stored, such as s3:\/\/path\/to\/query\/bucket\/.\nEnsure this value ends with a forward slash (' [...]
+    "CamelAwsAthenaOutputType": { "kind": "header", "displayName": "", "group": "getQueryResults", "label": "getQueryResults", "required": false, "javaType": "org.apache.camel.component.aws2.athena.Athena2OutputType", "enum": [ "StreamList", "SelectList", "S3Pointer" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "How query results should be returned.  One of\nStreamList (default - return a GetQueryResultsIterable that can page through  [...]
+    "CamelAwsAthenaQueryExecutionState": { "kind": "header", "displayName": "", "group": "getQueryExecution getQueryResults startQueryExecution", "label": "getQueryExecution getQueryResults startQueryExecution", "required": false, "javaType": "software.amazon.awssdk.services.athena.model.QueryExecutionState", "enum": [ "QUEUED", "RUNNING", "SUCCEEDED", "FAILED", "CANCELLED", "null" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The sta [...]
+    "CamelAwsAthenaClientRequestToken": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "A unique string to ensure issues queries are idempotent.  It is unlikely you will need to set this." },
+    "CamelAwsAthenaQueryString": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The SQL query to run.  Except for simple queries, prefer setting this as the `body` of the\nExchange or as this header to avoid having to deal with URL encoding issues." },
+    "CamelAwsAthenaEncryptionOption": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "software.amazon.awssdk.services.athena.model.EncryptionOption", "enum": [ "SSE_S3", "SSE_KMS", "CSE_KMS", "null" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The encryption type to use when storing query results in S3." },
+    "CamelAwsAthenaKmsKey": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID." },
+    "CamelAwsAthenaWaitTimeout": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Optional max wait time in millis to wait for a successful query completion.\nSee the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more." },
+    "CamelAwsAthenaInitialDelay": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Milliseconds before the first poll for query execution status.\nSee the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more." },
+    "CamelAwsAthenaDelay": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Milliseconds before the next poll for query execution status.\nSee the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more." },
+    "CamelAwsAthenaMaxAttempts": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Maximum number of times to attempt a query.  Set to 1 to disable retries.\nSee the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more." },
+    "CamelAwsAthenaRetry": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Optional comma separated list of error types to retry the query for.  Use\n'retryable' to retry all retryable failure conditions (e.g. generic errors and resources exhausted),\n'generic' to retry 'GENERIC_INTERNAL_ERROR' fai [...]
+    "CamelAwsAthenaResetWaitTimeoutOnRetry": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Reset the waitTimeout countdown in the event of a query retry.\nIf set to true, potential max time spent waiting for queries is equal to waitTimeout x maxAttempts.\nSee the section 'Waiting for Query Compl [...]
+    "CamelAwsAthenaStartQueryExecutionAttempts": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Total number of attempts made to run the query.  Will be greater than 1 if the query is retried." },
+    "CamelAwsAthenaStartQueryExecutionElapsedMillis": { "kind": "header", "displayName": "", "group": "startQueryExecution", "label": "startQueryExecution", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Total time in millis taken in startQueryExecution (mostly relevant when waiting for query completion within startQueryExecution)." }
+  },
   "properties": {
     "label": { "kind": "path", "displayName": "Label", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Logical name" },
     "accessKey": { "kind": "parameter", "displayName": "Access Key", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.aws2.athena.Athena2Configuration", "configurationField": "configuration", "description": "Amazon AWS Access Key." },
diff --git a/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc b/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
index 18e945f..96cf586 100644
--- a/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
+++ b/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
@@ -79,94 +79,9 @@ from("direct:start")
     .to("mock:result");
 --------------------------------------------------------------------------------
 
-=== Message headers evaluated by the Athena producer
-
-Message headers listed here override the corresponding
-query parameters listed in "Query Parameters".
-
-[width="100%",cols="5%,5%,10%,75%,5%",options="header",]
-|=======================================================================
-|Operation |Header |Type |Description |Required
-
-|All |`CamelAwsAthenaOperation` |`String` |The operation to perform. Permitted values are getQueryExecution, getQueryResults, listQueryExecutions, startQueryExecution. Default is startQueryExecution. | No
-
-|startQueryExecution |`CamelAwsAthenaDatabase` |`String` |The Athena database to use. | No
-
-|getQueryExecution, getQueryResults |`CamelAwsAthenaQueryExecutionId` |`String` |The unique ID identifying the query execution. | No
-
-|listQueryExecutions, startQueryExecution |`CamelAwsAthenaWorkGroup` |`String` |The workgroup to use for running the query. | No
-
-|getQueryResults, listQueryExecutions |`CamelAwsAthenaNextToken` |`String` |Pagination token to use in the case where the response from the previous request was truncated. | No
-
-|getQueryResults, listQueryExecutions |`CamelAwsAthenaMaxResults` |`Integer` |Max number of results to return for the given operation (if supported by the Athena API endpoint).
-If not set, will use the Athena API default for the given operation. | No
-
-|startQueryExecution |`CamelAwsAthenaIncludeTrace` |`boolean` |Include useful trace information at the beginning of queries as an SQL comment (prefixed with "--"). | No
-
-|startQueryExecution |`CamelAwsAthenaOutputLocation` |`String` |The location in Amazon S3 where query results are stored, such as s3://path/to/query/bucket/.
-Ensure this value ends with a forward slash ('/'). | No
-
-|getQueryResults |`CamelAwsAthenaOutputType` |`Athena2OutputType` |How query results should be returned.  One of
-StreamList (default - return a GetQueryResultsIterable that can page through all results),
-SelectList (returns at most 1,000 rows at a time, plus a NextToken value as a header than can be used for manual pagination of results),
-S3Pointer (return an S3 path pointing to the results). | No
-
-|startQueryExecution |`CamelAwsAthenaClientRequestToken` |`String` |A unique string to ensure issues queries are idempotent.  It is unlikely you will need to set this. | No
-
-|startQueryExecution |`CamelAwsAthenaQueryString` |`String` |The SQL query to run.  Except for simple queries, prefer setting this as the `body` of the
-Exchange or as this header to avoid having to deal with URL encoding issues. | No
-
-|startQueryExecution |`CamelAwsAthenaEncryptionOption` |`String` |The encryption type to use when storing query results in S3.  One of SSE_S3, SSE_KMS, or CSE_KMS. | No
-
-|startQueryExecution |`CamelAwsAthenaKmsKey` |`String` |For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID. | No
-
-|startQueryExecution |`CamelAwsAthenaWaitTimeout` |`long` |Optional max wait time in millis to wait for a successful query completion.
-See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more. | No
-
-|startQueryExecution |`CamelAwsAthenaInitialDelay` |`long` |Milliseconds before the first poll for query execution status.
-See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more. | No
-
-|startQueryExecution |`CamelAwsAthenaDelay` |`long` |Milliseconds before the next poll for query execution status.
-See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more. | No
-
-|startQueryExecution |`CamelAwsAthenaMaxAttempts` |`int` |Maximum number of times to attempt a query.  Set to 1 to disable retries.
-See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more. | No
-
-|startQueryExecution |`CamelAwsAthenaRetry` |`String` |Optional comma separated list of error types to retry the query for.  Use
-'retryable' to retry all retryable failure conditions (e.g. generic errors and resources exhausted),
-'generic' to retry 'GENERIC_INTERNAL_ERROR' failures,
-'exhausted' to retry queries that have exhausted resource limits,
-'always' to always retry regardless of failure condition, or
-'never' or null to never retry (default).
-See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more. | No
-
-|startQueryExecution |`CamelAwsAthenaResetWaitTimeoutOnRetry` |`boolean` |Reset the waitTimeout countdown in the event of a query retry.
-If set to true, potential max time spent waiting for queries is equal to waitTimeout x maxAttempts.
-See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more. | No
-
-|=======================================================================
-
-=== Message headers set by the Athena producer
-
-[width="100%",cols="5%,5%,10%,80%",options="header",]
-|=======================================================================
-|Operation |Header |Type |Description
-
-|getQueryExecution, getQueryResults, startQueryExecution |`CamelAwsAthenaQueryExecutionId` |`String` |The unique ID identifying the query execution.
-
-|getQueryExecution, getQueryResults, startQueryExecution |`CamelAwsAthenaQueryExecutionState` |`software.amazon.awssdk.services.athena.model.QueryExecutionState` |The state of the query execution.  One of `QUEUED`, `RUNNING`, `SUCCEEDED`, `FAILED`, `CANCELLED`.
-
-|getQueryExecution, getQueryResults, startQueryExecution |`CamelAwsAthenaOutputLocation` |`String` |The location in Amazon S3 where query results are stored, such as s3://path/to/query/bucket/.
-
-|getQueryExecution, getQueryResults, startQueryExecution |`CamelAwsAthenaQueryExecutionId` |`String` |The unique ID identifying the query execution.
-
-|getQueryResults, listQueryExecutions |`CamelAwsAthenaNextToken` |`String` |Pagination token to use in the case where the response from the previous request was truncated.
-
-|startQueryExecution |`CamelAwsAthenaStartQueryExecutionAttempts` |`int` |Total number of attempts made to run the query.  Will be greater than 1 if the query is retried.
-
-|startQueryExecution |`CamelAwsAthenaStartQueryExecutionElapsedMillis` |`long` |Total time in millis taken in startQueryExecution (mostly relevant when waiting for query completion within startQueryExecution).
-
-|=======================================================================
+// component headers: START
+include::partial$component-endpoint-headers.adoc[]
+// component headers: END
 
 === Static credentials vs Default Credential Provider
 
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Constants.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Constants.java
index 7a73470..e051097 100644
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Constants.java
+++ b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Constants.java
@@ -16,37 +16,116 @@
  */
 package org.apache.camel.component.aws2.athena;
 
+import org.apache.camel.spi.Metadata;
+
 /**
  * Constants used in Camel AWS Athena module SDK v2.
  */
 public interface Athena2Constants {
 
     // common
+    @Metadata(label = "all",
+              description = "The operation to perform. Permitted values are getQueryExecution, getQueryResults, listQueryExecutions, startQueryExecution.",
+              javaType = "org.apache.camel.component.aws2.athena.Athena2Operations", defaultValue = "startQueryExecution")
     String OPERATION = "CamelAwsAthenaOperation";
+    @Metadata(label = "startQueryExecution", description = "The Athena database to use.", javaType = "String")
     String DATABASE = "CamelAwsAthenaDatabase";
+    @Metadata(label = "getQueryExecution getQueryResults startQueryExecution",
+              description = "The unique ID identifying the query execution.", javaType = "String")
     String QUERY_EXECUTION_ID = "CamelAwsAthenaQueryExecutionId";
+    @Metadata(label = "listQueryExecutions startQueryExecution", description = "The workgroup to use for running the query.",
+              javaType = "String")
     String WORK_GROUP = "CamelAwsAthenaWorkGroup";
+    @Metadata(label = "getQueryResults listQueryExecutions",
+              description = "Pagination token to use in the case where the response from the previous request was truncated.",
+              javaType = "String")
     String NEXT_TOKEN = "CamelAwsAthenaNextToken";
+    @Metadata(label = "getQueryResults listQueryExecutions",
+              description = "Max number of results to return for the given operation (if supported by the Athena API endpoint).\n"
+                            +
+                            "If not set, will use the Athena API default for the given operation.",
+              javaType = "Integer")
     String MAX_RESULTS = "CamelAwsAthenaMaxResults";
+    @Metadata(label = "startQueryExecution",
+              description = "Include useful trace information at the beginning of queries as an SQL comment (prefixed with \"--\").",
+              javaType = "boolean")
     String INCLUDE_TRACE = "CamelAwsAthenaIncludeTrace";
+    @Metadata(label = "getQueryExecution getQueryResults startQueryExecution",
+              description = "The location in Amazon S3 where query results are stored, such as s3://path/to/query/bucket/.\n" +
+                            "Ensure this value ends with a forward slash ('/').",
+              javaType = "String")
     String OUTPUT_LOCATION = "CamelAwsAthenaOutputLocation";
+    @Metadata(label = "getQueryResults", description = "How query results should be returned.  One of\n" +
+                                                       "StreamList (default - return a GetQueryResultsIterable that can page through all results),\n"
+                                                       +
+                                                       "SelectList (returns at most 1,000 rows at a time, plus a NextToken value as a header than can be used for manual pagination of results),\n"
+                                                       +
+                                                       "S3Pointer (return an S3 path pointing to the results).",
+              javaType = "org.apache.camel.component.aws2.athena.Athena2OutputType")
     String OUTPUT_TYPE = "CamelAwsAthenaOutputType";
+    @Metadata(label = "getQueryExecution getQueryResults startQueryExecution",
+              description = "The state of the query execution.",
+              javaType = "software.amazon.awssdk.services.athena.model.QueryExecutionState")
     String QUERY_EXECUTION_STATE = "CamelAwsAthenaQueryExecutionState"; // read only
 
     // startQueryExecution
+    @Metadata(label = "startQueryExecution",
+              description = "A unique string to ensure issues queries are idempotent.  It is unlikely you will need to set this.",
+              javaType = "String")
     String CLIENT_REQUEST_TOKEN = "CamelAwsAthenaClientRequestToken";
+    @Metadata(label = "startQueryExecution",
+              description = "The SQL query to run.  Except for simple queries, prefer setting this as the `body` of the\n" +
+                            "Exchange or as this header to avoid having to deal with URL encoding issues.",
+              javaType = "String")
     String QUERY_STRING = "CamelAwsAthenaQueryString";
+    @Metadata(label = "startQueryExecution", description = "The encryption type to use when storing query results in S3.",
+              javaType = "software.amazon.awssdk.services.athena.model.EncryptionOption")
     String ENCRYPTION_OPTION = "CamelAwsAthenaEncryptionOption";
+    @Metadata(label = "startQueryExecution", description = "For SSE-KMS and CSE-KMS, this is the KMS key ARN or ID.",
+              javaType = "String")
     String KMS_KEY = "CamelAwsAthenaKmsKey";
-
+    @Metadata(label = "startQueryExecution",
+              description = "Optional max wait time in millis to wait for a successful query completion.\n" +
+                            "See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more.",
+              javaType = "long")
     String WAIT_TIMEOUT = "CamelAwsAthenaWaitTimeout";
+    @Metadata(label = "startQueryExecution", description = "Milliseconds before the first poll for query execution status.\n" +
+                                                           "See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more.",
+              javaType = "long")
     String INITIAL_DELAY = "CamelAwsAthenaInitialDelay";
+    @Metadata(label = "startQueryExecution", description = "Milliseconds before the next poll for query execution status.\n" +
+                                                           "See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more.",
+              javaType = "long")
     String DELAY = "CamelAwsAthenaDelay";
-
+    @Metadata(label = "startQueryExecution",
+              description = "Maximum number of times to attempt a query.  Set to 1 to disable retries.\n" +
+                            "See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more.",
+              javaType = "int")
     String MAX_ATTEMPTS = "CamelAwsAthenaMaxAttempts";
+    @Metadata(label = "startQueryExecution",
+              description = "Optional comma separated list of error types to retry the query for.  Use\n" +
+                            "'retryable' to retry all retryable failure conditions (e.g. generic errors and resources exhausted),\n"
+                            +
+                            "'generic' to retry 'GENERIC_INTERNAL_ERROR' failures,\n" +
+                            "'exhausted' to retry queries that have exhausted resource limits,\n" +
+                            "'always' to always retry regardless of failure condition, or\n" +
+                            "'never' or null to never retry (default).\n" +
+                            "See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more.",
+              javaType = "String")
     String RETRY = "CamelAwsAthenaRetry";
+    @Metadata(label = "startQueryExecution", description = "Reset the waitTimeout countdown in the event of a query retry.\n" +
+                                                           "If set to true, potential max time spent waiting for queries is equal to waitTimeout x maxAttempts.\n"
+                                                           +
+                                                           "See the section 'Waiting for Query Completion and Retrying Failed Queries' to learn more.",
+              javaType = "boolean")
     String RESET_WAIT_TIMEOUT_ON_RETRY = "CamelAwsAthenaResetWaitTimeoutOnRetry";
+    @Metadata(label = "startQueryExecution",
+              description = "Total number of attempts made to run the query.  Will be greater than 1 if the query is retried.",
+              javaType = "int")
     String START_QUERY_EXECUTION_ATTEMPTS = "CamelAwsAthenaStartQueryExecutionAttempts"; // read only
+    @Metadata(label = "startQueryExecution",
+              description = "Total time in millis taken in startQueryExecution (mostly relevant when waiting for query completion within startQueryExecution).",
+              javaType = "long")
     String START_QUERY_EXECUTION_ELAPSED_MILLIS = "CamelAwsAthenaStartQueryExecutionElapsedMillis"; // read only
 
 }
diff --git a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
index f74d1e8..797fb34 100644
--- a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
+++ b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
@@ -32,8 +32,7 @@ import software.amazon.awssdk.services.athena.AthenaClient;
  * Access AWS Athena service using AWS SDK version 2.x.
  */
 @UriEndpoint(firstVersion = "3.4.0", scheme = "aws2-athena", title = "AWS Athena", syntax = "aws2-athena:label",
-             producerOnly = true, category = {
-                     Category.CLOUD, Category.DATABASE })
+             producerOnly = true, category = { Category.CLOUD, Category.DATABASE }, headersClass = Athena2Constants.class)
 public class Athena2Endpoint extends DefaultEndpoint {
 
     private AthenaClient athenaClient;