This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 44c43dcd5a3b3fe21fffa60aa69b9900917b5e96 Author: Claus Ibsen <[email protected]> AuthorDate: Sat Oct 24 19:57:05 2026 +0200 CAMEL-24961: Catalog body types for nine google cloud components, ibm-secrets-manager, hashicorp-vault and cyberark-vault (#28404) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../camel/catalog/components/cyberark-vault.json | 4 ++ .../catalog/components/google-bigquery-sql.json | 4 ++ .../camel/catalog/components/google-bigquery.json | 4 ++ .../camel/catalog/components/google-firestore.json | 5 +++ .../camel/catalog/components/google-functions.json | 4 ++ .../catalog/components/google-secret-manager.json | 4 ++ .../catalog/components/google-speech-to-text.json | 4 ++ .../catalog/components/google-text-to-speech.json | 4 ++ .../camel/catalog/components/google-vertexai.json | 4 ++ .../camel/catalog/components/google-vision.json | 4 ++ .../camel/catalog/components/hashicorp-vault.json | 4 ++ .../catalog/components/ibm-secrets-manager.json | 4 ++ .../docs/google-bigquery-sql-component.adoc | 35 ++++++--------- .../catalog/docs/hashicorp-vault-component.adoc | 3 +- .../component/cyberark/vault/cyberark-vault.json | 4 ++ .../cyberark/vault/CyberArkVaultEndpoint.java | 18 ++++++++ .../component/google/bigquery/google-bigquery.json | 4 ++ .../google/bigquery/sql/google-bigquery-sql.json | 4 ++ .../main/docs/google-bigquery-sql-component.adoc | 35 ++++++--------- .../google/bigquery/GoogleBigQueryEndpoint.java | 9 ++++ .../bigquery/sql/GoogleBigQuerySQLEndpoint.java | 14 ++++++ .../google/firestore/google-firestore.json | 5 +++ .../google/firestore/GoogleFirestoreEndpoint.java | 34 ++++++++++++++ .../google/functions/google-functions.json | 4 ++ .../functions/GoogleCloudFunctionsEndpoint.java | 38 ++++++++++++++++ .../secret/manager/google-secret-manager.json | 4 ++ .../manager/GoogleSecretManagerEndpoint.java | 27 +++++++++++ .../google/speechtotext/google-speech-to-text.json | 4 ++ .../GoogleCloudSpeechToTextEndpoint.java | 16 +++++++ .../google/texttospeech/google-text-to-speech.json | 4 ++ .../GoogleCloudTextToSpeechEndpoint.java | 28 ++++++++++++ .../component/google/vertexai/google-vertexai.json | 4 ++ .../google/vertexai/GoogleVertexAIEndpoint.java | 44 ++++++++++++++++++ .../component/google/vision/google-vision.json | 4 ++ .../google/vision/GoogleCloudVisionEndpoint.java | 52 ++++++++++++++++++++++ .../component/hashicorp/vault/hashicorp-vault.json | 4 ++ .../src/main/docs/hashicorp-vault-component.adoc | 3 +- .../hashicorp/vault/HashicorpVaultEndpoint.java | 24 ++++++++++ .../ibm/secrets/manager/ibm-secrets-manager.json | 4 ++ .../secrets/manager/IBMSecretsManagerEndpoint.java | 43 ++++++++++++++++++ 40 files changed, 477 insertions(+), 44 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json index ecb975402431..da9744df5f43 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/cyberark-vault.json @@ -39,6 +39,10 @@ "password": { "index": 12, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "security": "secret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" }, "username": { "index": 13, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "security": "secret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "createSecret", "carriers": [ "text", "bytes", "stream", "file" ] } ], "description": "getSecret, the default operation, does not read the body. createSecret stores the body as text, unless the CamelCyberArkVaultSecretValue header is set: bytes, a stream or a file are read as text, a Map or a POJO is stored as its toString(), so marshal it first, and no body fails" }, + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "byOption": [ { "option": "operation", "value": "createSecret", "carriers": [ "unchanged" ] } ], "description": "The value of the secret as text for getSecret, also in the CamelCyberArkVaultSecretValue header: unmarshal a JSON secret to read its fields. createSecret leaves the body unchanged" } + }, "properties": { "label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Logical name" }, "account": { "index": 1, "kind": "parameter", "displayName": "Account", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur account name" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json index 3a745571848f..55b419ae3978 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery-sql.json @@ -35,6 +35,10 @@ "CamelGoogleBigQueryPageToken": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The page token to retrieve a specific page of results from BigQuery. If not set, the first page is returned", "constantName": "org.apache.camel.component.google.bigquery.GoogleBigQueryConstants#PAGE_TOKEN" }, "CamelGoogleBigQueryNextPageToken": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The next page token returned by BigQuery. Use this token in the CamelGoogleBigQueryPageToken header of a subsequent request to retrieve the next page of results", "constantName": "org.apache.camel.component.google.bigquery.Google [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "The query is set on the endpoint. A Map body gives the values of the @name parameters, before the headers of the same name; any other body is ignored" }, + "producerOut": { "carriers": [ "list", "value" ], "byOption": [ { "option": "outputType", "value": "STREAM_LIST", "carriers": [ "iterator", "value" ] } ], "description": "For a SELECT the rows of the page, a Map per row whose scalar values are the text BigQuery returns, with the next page token and the job id in headers; with outputType=STREAM_LIST an Iterator of those Maps over all pages. For a DML statement the number of affected rows as a Long" } + }, "properties": { "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" }, "queryString": { "index": 1, "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery.json index 0042affcd280..06e9c887c022 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-bigquery.json @@ -36,6 +36,10 @@ "CamelGoogleBigQueryInsertId": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "InsertId to use when inserting data", "constantName": "org.apache.camel.component.google.bigquery.GoogleBigQueryConstants#INSERT_ID" }, "CamelGoogleBigQueryPartitionDecorator": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Partition decorator to indicate partition to use when inserting data", "constantName": "org.apache.camel.component.google.bigquery.GoogleBigQueryConstants#PARTITION_DECORATOR" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "map", "list" ], "description": "The row to insert as a Map of column names to values, or a List of such Maps for one row each; the exchanges of a grouped aggregation are inserted together. Text such as JSON, bytes, a stream, a POJO or no body fails: unmarshal it into a Map first" }, + "producerOut": { "carriers": [ "unchanged" ] } + }, "properties": { "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" }, "datasetId": { "index": 1, "kind": "path", "displayName": "Dataset Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "BigQuery Dataset Id" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-firestore.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-firestore.json index a3bad9de1c88..d91df504f7b0 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-firestore.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-firestore.json @@ -58,6 +58,11 @@ "CamelGoogleFirestoreMerge": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "When true, merge the data with existing document data instead of overwriting.", "constantName": "org.apache.camel.component.google.firestore.GoogleFirestoreConstants#MERGE" }, "CamelGoogleFirestoreMergeFields": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "List of field paths to merge when using merge option.", "constantName": "org.apache.camel.component.google.firestore.GoogleFirestoreConstants#MERGE_FIELDS" } }, + "bodyTypes": { + "consumerOut": { "carriers": [ "map" ], "description": "The fields of the document as a Map, one message per document, with its id, path and times in headers, and with realtimeUpdates the change type. Numbers are Long or Double, a timestamp a com.google.cloud.Timestamp" }, + "producerIn": { "carriers": [ "map", "text" ], "dependsOn": [ "operation" ], "description": "The fields to write for setDocument (the default), createDocument and updateDocument: a Map, or JSON object text, which is parsed into a Map. Bytes, a stream, a List, a POJO or no body fail: unmarshal it first. The other operations take their input from options and headers" }, + "producerOut": { "carriers": [ "map" ], "byOption": [ { "option": "operation", "value": "getDocumentById", "carriers": [ "map", "null" ] }, { "option": "operation", "value": "deleteDocument", "carriers": [ "value" ], "javaType": "java.lang.Boolean" }, { "option": "operation", "value": "queryCollection", "carriers": [ "list" ], "javaType": "java.util.List<java.util.Map<java.lang.String, java.lang.Object>>" }, { "option": "operation", "value": "listDocuments", "carriers": [ "list" ], " [...] + }, "properties": { "collectionName": { "index": 0, "kind": "path", "displayName": "Collection Name", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.firestore.GoogleFirestoreConfiguration", "configurationField": "configuration", "description": "The collection name to use" }, "databaseId": { "index": 1, "kind": "parameter", "displayName": "Database Id", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.firestore.GoogleFirestoreConfiguration", "configurationField": "configuration", "description": "The Firestore database ID. If not specified, the default database '(default)' will be used." }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-functions.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-functions.json index 8ad9329d9503..1d2e83c5a08a 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-functions.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-functions.json @@ -34,6 +34,10 @@ "CamelGoogleCloudFunctionsSourceArchiveUrl": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Google Cloud Storage URL, starting with gs:\/\/, pointing to the zip archive which contains the function. Used for createFunction operation.", "constantName": "org.apache.camel.component.google.functions.GoogleCloudF [...] "CamelGoogleCloudFunctionsResponseObject": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Functions Client invocation", "constantName": "org.apache.camel.component.google.functions.GoogleCloudFunctionsConstants#RESPONSE_OBJECT" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream" ], "dependsOn": [ "operation" ], "byOption": [ { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "The data to call the function with, for callFunction (the default), converted to text: a Map or a POJO is sent as its toString(), so marshal it first, and no body fails. The other operations take their input from options and headers. With pojoRequest=true the request object of the operation, such [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "byOption": [ { "option": "operation", "value": "listFunctions", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.functions.v1.CloudFunction>" }, { "option": "operation", "value": "getFunction", "carriers": [ "pojo" ], "javaType": "com.google.cloud.functions.v1.CloudFunction" }, { "option": "operation", "value": "createFunction", "carriers": [ "pojo" ], "javaType": "com.google.cloud.functions [...] + }, "properties": { "functionName": { "index": 0, "kind": "path", "displayName": "Function Name", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.functions.GoogleCloudFunctionsConfiguration", "configurationField": "configuration", "description": "The user-defined name of the function" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.functions.GoogleCloudFunctionsConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service account" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-secret-manager.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-secret-manager.json index 011cbeb11f4a..dd66abba9d34 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-secret-manager.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-secret-manager.json @@ -33,6 +33,10 @@ "CamelGoogleSecretManagerSecretId": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the secret", "constantName": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConstants#SECRET_ID" }, "CamelGoogleSecretManagerVersionId": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "latest", "description": "The version of the secret", "constantName": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConstants#VERSION_ID" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "getSecretVersion", "carriers": [ "any" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "any" ] } ], "description": "The value of the secret for createSecret, the default operation, as text: bytes, a stream or a file are read as text, a Map or a POJO is stored as its toString() [...] + "producerOut": { "carriers": [ "pojo" ], "javaType": "com.google.cloud.secretmanager.v1.SecretVersion", "byOption": [ { "option": "operation", "value": "getSecretVersion", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "deleteSecret", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "pojo" ] } ], "description": "The SecretVersion of the Google SDK that createSecret added. The value of the secret [...] + }, "properties": { "project": { "index": 0, "kind": "path", "displayName": "Project", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConfiguration", "configurationField": "configuration", "description": "The Google Cloud Project Id name related to the Secret Manager" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service acc [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-speech-to-text.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-speech-to-text.json index da8c71596a65..88beaa3876eb 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-speech-to-text.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-speech-to-text.json @@ -31,6 +31,10 @@ "CamelGoogleCloudSpeechToTextOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextOperations", "enum": [ "recognize" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform", "constantName": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConstants#O [...] "CamelGoogleCloudSpeechToTextResponseObject": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "com.google.cloud.speech.v1.RecognizeResponse", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Cloud Speech-to-Text API invocation", "constantName": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConstants# [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "bytes", "stream", "file" ], "byOption": [ { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ], "javaType": "com.google.cloud.speech.v1.RecognizeRequest" } ], "description": "The audio to transcribe, sent inline in the encoding and sample rate of the encoding and sampleRateHertz options (LINEAR16 by default). A stream or a file is read into bytes and a String is sent as its bytes, a Map, a POJO or no body fails. With pojoRequest=true a Rec [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "description": "The transcript: the best alternative of each result, one line per result, or an empty String when nothing is recognized, also with pojoRequest=true. The RecognizeResponse is in the CamelGoogleCloudSpeechToTextResponseObject header" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConfiguration", "configurationField": "configuration", "description": "The operation name" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service a [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-text-to-speech.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-text-to-speech.json index 788442b9e7e1..6b7c7c2d758d 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-text-to-speech.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-text-to-speech.json @@ -31,6 +31,10 @@ "CamelGoogleCloudTextToSpeechOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpeechOperations", "enum": [ "synthesize", "listVoices" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform", "constantName": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSp [...] "CamelGoogleCloudTextToSpeechResponseObject": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "com.google.cloud.texttospeech.v1.SynthesizeSpeechResponse", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Cloud Text-to-Speech API invocation", "constantName": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpe [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "synthesize", "carriers": [ "text", "bytes", "stream", "file" ] }, { "option": "operation", "value": "listVoices", "carriers": [ "any" ] }, { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ], "javaType": "com.google.cloud.texttospeech.v1.SynthesizeSpeechRequest" } ], "description": "The text to speak for synthesize: bytes, a stream or a file are read as text, a Map or a POJO is spok [...] + "producerOut": { "carriers": [ "bytes", "list" ], "byOption": [ { "option": "operation", "value": "synthesize", "carriers": [ "bytes" ], "javaType": "byte[]" }, { "option": "operation", "value": "listVoices", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.texttospeech.v1.Voice>" }, { "option": "pojoRequest", "value": "true", "carriers": [ "bytes" ], "javaType": "byte[]" } ], "description": "The audio of synthesize as bytes, in the audioEncoding option (MP3 by de [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpeechConfiguration", "configurationField": "configuration", "description": "The operation name" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpeechConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service a [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json index 88378fbf4f7a..947bfc7fd6b5 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vertexai.json @@ -77,6 +77,10 @@ "CamelGoogleVertexAIRawResponse": { "index": 30, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The raw JSON response from rawPredict operation", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#RAW_RESPONSE" }, "CamelGoogleVertexAIAnthropicVersion": { "index": 31, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Anthropic API version for Claude models", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#ANTHROPIC_VERSION" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "generateEmbeddings", "carriers": [ "text", "bytes", "stream", "file", "list" ] }, { "option": "operation", "value": "generateMultimodal", "carriers": [ "text", "bytes" ] }, { "option": "operation", "value": "rawPredict", "carriers": [ "text", "map" ] }, { "option": "operation", "value": "streamRawPredict", "carriers": [ "text", "map" ] } ], "description": "The prompt fo [...] + "producerOut": { "carriers": [ "text" ], "byOption": [ { "option": "streamOutputMode", "value": "chunks", "carriers": [ "list" ], "javaType": "java.util.List<String>" }, { "option": "operation", "value": "generateImage", "carriers": [ "list" ], "javaType": "java.util.List<com.google.genai.types.Image>" }, { "option": "operation", "value": "generateEmbeddings", "carriers": [ "list" ], "javaType": "java.util.List<java.util.List<Float>>" } ], "description": "The text the model answers f [...] + }, "properties": { "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vertexai.GoogleVertexAIConfiguration", "configurationField": "configuration", "description": "Google Cloud Project ID" }, "location": { "index": 1, "kind": "path", "displayName": "Location", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vertexai.GoogleVertexAIConfiguration", "configurationField": "configuration", "description": "Google Cloud location\/region (e.g., us-central1)" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vision.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vision.json index 128cd7f08be5..f9ab7f6eeebe 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vision.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-vision.json @@ -31,6 +31,10 @@ "CamelGoogleCloudVisionOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.camel.component.google.vision.GoogleCloudVisionOperations", "enum": [ "labelDetection", "textDetection", "faceDetection", "landmarkDetection", "logoDetection", "safeSearchDetection", "imagePropertiesDetection", "webDetection", "objectLocalization", "cropHintsDetection", "documentTextDetection" ], "deprecated": false, "depre [...] "CamelGoogleCloudVisionResponseObject": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "com.google.cloud.vision.v1.AnnotateImageResponse", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Cloud Vision API invocation", "constantName": "org.apache.camel.component.google.vision.GoogleCloudVisionConstants#RESPONSE_OBJECT" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "bytes", "stream", "file" ], "byOption": [ { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ], "javaType": "com.google.cloud.vision.v1.AnnotateImageRequest" } ], "description": "The image to annotate, sent inline. A stream or a file is read into bytes and a String is sent as its bytes, a Map, a POJO or no body fails. With pojoRequest=true an AnnotateImageRequest of the Google Cloud SDK: another body fails" }, + "producerOut": { "carriers": [ "list", "pojo" ], "byOption": [ { "option": "operation", "value": "labelDetection", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>" }, { "option": "operation", "value": "textDetection", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>" }, { "option": "operation", "value": "faceDetection", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud. [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vision.GoogleCloudVisionConfiguration", "configurationField": "configuration", "description": "The operation name" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vision.GoogleCloudVisionConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service account" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json index ced6bc67d8e1..e07af73a135e 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hashicorp-vault.json @@ -33,6 +33,10 @@ "CamelHashicorpVaultSecretPath": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the desired secret path as header.", "constantName": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConstants#SECRET_PATH" }, "CamelHashicorpVaultSecretVersion": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the desired secret version as header.", "constantName": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConstants#SECRET_VERSION" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "map", "pojo" ], "byOption": [ { "option": "operation", "value": "getSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "any" ] } ], "description": "The fields of the secret for createSecret, the default operation: a Map of the keys and values, or a POJO written as JSON. Text, bytes, a stream, a file or a List fail, so unmarshal JSON f [...] + "producerOut": { "carriers": [ "unchanged" ], "byOption": [ { "option": "operation", "value": "getSecret", "carriers": [ "map", "null" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "list" ], "javaType": "java.util.List<java.lang.String>" } ], "description": "getSecret gives a Map with the fields of the secret under data and its version under metadata, or no body when the secret does not exist or is deleted. listSecrets gives a List of the names of the secrets in [...] + }, "properties": { "secretsEngine": { "index": 0, "kind": "path", "displayName": "Secrets Engine", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", "configurationField": "configuration", "description": "Vault Name to be used" }, "cloud": { "index": 1, "kind": "parameter", "displayName": "Cloud", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", "configurationField": "configuration", "description": "Determine if the Hashicorp Vault is deployed on Hashicorp Cloud or not" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ibm-secrets-manager.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ibm-secrets-manager.json index 60e1d1c3b75d..fa2ea7fd7a2c 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ibm-secrets-manager.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/ibm-secrets-manager.json @@ -35,6 +35,10 @@ "CamelIbmSecretsManagerSecretPayload": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the secret payload for update operation.", "constantName": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerConstants#SECRET_PAYLOAD" }, "CamelIbmSecretsManagerSecretData": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.Map", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the secret data (Map) for KV secret update operation.", "constantName": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerConstants#SECRET_DATA" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "createKVSecret", "carriers": [ "map" ] }, { "option": "operation", "value": "updateSecret", "carriers": [ "text", "bytes", "stream", "file", "map" ] }, { "option": "operation", "value": "getSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "any" ] }, [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "byOption": [ { "option": "operation", "value": "getSecret", "carriers": [ "text", "map", "pojo" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "pojo" ], "javaType": "com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.SecretMetadataPaginatedCollection" }, { "option": "operation", "value": "updateSecret", [...] + }, "properties": { "label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerConfiguration", "configurationField": "configuration", "description": "Logical name" }, "operation": { "index": 1, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerOperation", "enum": [ "createArbitrarySecret", "createKVSecret", "getSecret", "deleteSecret", "listSecrets", "updateSecret", "listSecretVersions" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.i [...] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-bigquery-sql-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-bigquery-sql-component.adoc index 3212259fde81..1f5765be3c84 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-bigquery-sql-component.adoc +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/google-bigquery-sql-component.adoc @@ -221,22 +221,23 @@ Returns an `Iterator<Map<String, Object>>` for memory-efficient streaming of lar == Data Type Mapping -BigQuery result types are mapped to Java types: +BigQuery result types are mapped to Java types. The values of the scalar types are the text +BigQuery returns for them, as a `String`: convert them where you need a number or a boolean. [cols="1,1,3"] |=== |BigQuery Type|Java Type|Notes |INT64 -|Long -| +|String +|For example `"42"` |FLOAT64 -|Double -| +|String +|For example `"1.5"` -|NUMERIC -|BigDecimal +|NUMERIC, BIGNUMERIC +|String | |STRING @@ -244,28 +245,20 @@ BigQuery result types are mapped to Java types: | |BOOL -|Boolean -| - -|BYTES -|byte[] -| - -|DATE |String -|ISO 8601 format +|`"true"` or `"false"` -|DATETIME +|BYTES |String -|ISO 8601 format +|Base64 encoded -|TIME +|DATE, DATETIME, TIME |String |ISO 8601 format |TIMESTAMP |String -|ISO 8601 format with timezone +|The text BigQuery returns, such as the seconds since the epoch |STRUCT (RECORD) |Map<String, Object> @@ -276,7 +269,7 @@ BigQuery result types are mapped to Java types: |Elements recursively converted based on their type |RANGE -|Map<String, Object> +|Map<String, String> |Map with range start and end values |NULL diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hashicorp-vault-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hashicorp-vault-component.adoc index 845a2c662568..98721af5462b 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hashicorp-vault-component.adoc +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hashicorp-vault-component.adoc @@ -103,7 +103,8 @@ YAML:: ==== Getting a secret -The message body becomes the data of the secret; the `CamelHashicorpVaultSecretVersion` header reads a given +The message body becomes a Map with the fields of the secret under `data` and its version details under +`metadata`, or no body when the secret does not exist; the `CamelHashicorpVaultSecretVersion` header reads a given version instead of the latest: [tabs] diff --git a/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json b/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json index ecb975402431..da9744df5f43 100644 --- a/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json +++ b/components/camel-cyberark-vault/src/generated/resources/META-INF/org/apache/camel/component/cyberark/vault/cyberark-vault.json @@ -39,6 +39,10 @@ "password": { "index": 12, "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "security": "secret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The password for authentication with CyberArk Conjur" }, "username": { "index": 13, "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "security": "secret", "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The username for authentication with CyberArk Conjur" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "createSecret", "carriers": [ "text", "bytes", "stream", "file" ] } ], "description": "getSecret, the default operation, does not read the body. createSecret stores the body as text, unless the CamelCyberArkVaultSecretValue header is set: bytes, a stream or a file are read as text, a Map or a POJO is stored as its toString(), so marshal it first, and no body fails" }, + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "byOption": [ { "option": "operation", "value": "createSecret", "carriers": [ "unchanged" ] } ], "description": "The value of the secret as text for getSecret, also in the CamelCyberArkVaultSecretValue header: unmarshal a JSON secret to read its fields. createSecret leaves the body unchanged" } + }, "properties": { "label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "Logical name" }, "account": { "index": 1, "kind": "parameter", "displayName": "Account", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.cyberark.vault.CyberArkVaultConfiguration", "configurationField": "configuration", "description": "The CyberArk Conjur account name" }, diff --git a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpoint.java b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpoint.java index a181d2b8959f..7a522ae93f23 100644 --- a/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpoint.java +++ b/components/camel-cyberark-vault/src/main/java/org/apache/camel/component/cyberark/vault/CyberArkVaultEndpoint.java @@ -23,6 +23,9 @@ import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.component.cyberark.vault.client.ConjurClient; import org.apache.camel.component.cyberark.vault.client.ConjurClientFactory; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -35,6 +38,21 @@ import org.apache.camel.util.ObjectHelper; @UriEndpoint(firstVersion = "4.17.0", scheme = "cyberark-vault", title = "CyberArk Vault", syntax = "cyberark-vault:label", producerOnly = true, category = { Category.CLOUD, Category.SECURITY }, headersClass = CyberArkVaultConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + byOption = @BodyType.When(option = "operation", value = "createSecret", + carriers = { + Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, + Carrier.FILE }), + description = "getSecret, the default operation, does not read the body. createSecret stores" + + " the body as text, unless the CamelCyberArkVaultSecretValue header is set: bytes," + + " a stream or a file are read as text, a Map or a POJO is stored as its" + + " toString(), so marshal it first, and no body fails"), + producerOut = @BodyType(value = Carrier.TEXT, javaType = "java.lang.String", + byOption = @BodyType.When(option = "operation", value = "createSecret", + carriers = Carrier.UNCHANGED), + description = "The value of the secret as text for getSecret, also in the" + + " CamelCyberArkVaultSecretValue header: unmarshal a JSON secret to read its" + + " fields. createSecret leaves the body unchanged")) public class CyberArkVaultEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/google-bigquery.json b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/google-bigquery.json index 0042affcd280..06e9c887c022 100644 --- a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/google-bigquery.json +++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/google-bigquery.json @@ -36,6 +36,10 @@ "CamelGoogleBigQueryInsertId": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "InsertId to use when inserting data", "constantName": "org.apache.camel.component.google.bigquery.GoogleBigQueryConstants#INSERT_ID" }, "CamelGoogleBigQueryPartitionDecorator": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Partition decorator to indicate partition to use when inserting data", "constantName": "org.apache.camel.component.google.bigquery.GoogleBigQueryConstants#PARTITION_DECORATOR" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "map", "list" ], "description": "The row to insert as a Map of column names to values, or a List of such Maps for one row each; the exchanges of a grouped aggregation are inserted together. Text such as JSON, bytes, a stream, a POJO or no body fails: unmarshal it into a Map first" }, + "producerOut": { "carriers": [ "unchanged" ] } + }, "properties": { "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" }, "datasetId": { "index": 1, "kind": "path", "displayName": "Dataset Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.GoogleBigQueryConfiguration", "configurationField": "configuration", "description": "BigQuery Dataset Id" }, diff --git a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json index 3a745571848f..55b419ae3978 100644 --- a/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json +++ b/components/camel-google/camel-google-bigquery/src/generated/resources/META-INF/org/apache/camel/component/google/bigquery/sql/google-bigquery-sql.json @@ -35,6 +35,10 @@ "CamelGoogleBigQueryPageToken": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The page token to retrieve a specific page of results from BigQuery. If not set, the first page is returned", "constantName": "org.apache.camel.component.google.bigquery.GoogleBigQueryConstants#PAGE_TOKEN" }, "CamelGoogleBigQueryNextPageToken": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The next page token returned by BigQuery. Use this token in the CamelGoogleBigQueryPageToken header of a subsequent request to retrieve the next page of results", "constantName": "org.apache.camel.component.google.bigquery.Google [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "The query is set on the endpoint. A Map body gives the values of the @name parameters, before the headers of the same name; any other body is ignored" }, + "producerOut": { "carriers": [ "list", "value" ], "byOption": [ { "option": "outputType", "value": "STREAM_LIST", "carriers": [ "iterator", "value" ] } ], "description": "For a SELECT the rows of the page, a Map per row whose scalar values are the text BigQuery returns, with the next page token and the job id in headers; with outputType=STREAM_LIST an Iterator of those Maps over all pages. For a DML statement the number of affected rows as a Long" } + }, "properties": { "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "Google Cloud Project Id" }, "queryString": { "index": 1, "kind": "path", "displayName": "Query String", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "supportFileReference": true, "largeInput": true, "configurationClass": "org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLConfiguration", "configurationField": "configuration", "description": "BigQuery standard [...] diff --git a/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc b/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc index 3212259fde81..1f5765be3c84 100644 --- a/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc +++ b/components/camel-google/camel-google-bigquery/src/main/docs/google-bigquery-sql-component.adoc @@ -221,22 +221,23 @@ Returns an `Iterator<Map<String, Object>>` for memory-efficient streaming of lar == Data Type Mapping -BigQuery result types are mapped to Java types: +BigQuery result types are mapped to Java types. The values of the scalar types are the text +BigQuery returns for them, as a `String`: convert them where you need a number or a boolean. [cols="1,1,3"] |=== |BigQuery Type|Java Type|Notes |INT64 -|Long -| +|String +|For example `"42"` |FLOAT64 -|Double -| +|String +|For example `"1.5"` -|NUMERIC -|BigDecimal +|NUMERIC, BIGNUMERIC +|String | |STRING @@ -244,28 +245,20 @@ BigQuery result types are mapped to Java types: | |BOOL -|Boolean -| - -|BYTES -|byte[] -| - -|DATE |String -|ISO 8601 format +|`"true"` or `"false"` -|DATETIME +|BYTES |String -|ISO 8601 format +|Base64 encoded -|TIME +|DATE, DATETIME, TIME |String |ISO 8601 format |TIMESTAMP |String -|ISO 8601 format with timezone +|The text BigQuery returns, such as the seconds since the epoch |STRUCT (RECORD) |Map<String, Object> @@ -276,7 +269,7 @@ BigQuery result types are mapped to Java types: |Elements recursively converted based on their type |RANGE -|Map<String, Object> +|Map<String, String> |Map with range start and end values |NULL diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java index dee52470755e..b6947048c946 100644 --- a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java +++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/GoogleBigQueryEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -44,6 +47,12 @@ import static org.apache.camel.component.google.bigquery.GoogleBigQueryConstants @UriEndpoint(firstVersion = "2.20.0", scheme = SCHEME_BIGQUERY, title = "Google BigQuery", syntax = "google-bigquery:projectId:datasetId:tableId", category = { Category.CLOUD, Category.BIGDATA }, producerOnly = true, headersClass = GoogleBigQueryConstants.class) +@BodyTypes(producerIn = @BodyType(value = { Carrier.MAP, Carrier.LIST }, + description = "The row to insert as a Map of column names to values, or a List of such" + + " Maps for one row each; the exchanges of a grouped aggregation are" + + " inserted together. Text such as JSON, bytes, a stream, a POJO or no" + + " body fails: unmarshal it into a Map first"), + producerOut = @BodyType(Carrier.UNCHANGED)) public class GoogleBigQueryEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java index 1adbd07fef12..3be3c1cdcbab 100644 --- a/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java +++ b/components/camel-google/camel-google-bigquery/src/main/java/org/apache/camel/component/google/bigquery/sql/GoogleBigQuerySQLEndpoint.java @@ -23,6 +23,9 @@ import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.component.google.bigquery.GoogleBigQueryConnectionFactory; import org.apache.camel.component.google.bigquery.GoogleBigQueryConstants; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.DefaultEndpoint; @@ -45,6 +48,17 @@ import static org.apache.camel.component.google.bigquery.GoogleBigQueryConstants syntax = "google-bigquery-sql:projectId:queryString", category = { Category.CLOUD, Category.MESSAGING }, producerOnly = true, headersClass = GoogleBigQueryConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "The query is set on the endpoint. A Map body gives the values of the @name" + + " parameters, before the headers of the same name; any other body is" + + " ignored"), + producerOut = @BodyType(value = { Carrier.LIST, Carrier.VALUE }, + byOption = @BodyType.When(option = "outputType", value = "STREAM_LIST", + carriers = { Carrier.ITERATOR, Carrier.VALUE }), + description = "For a SELECT the rows of the page, a Map per row whose scalar values are" + + " the text BigQuery returns, with the next page token and the job id in" + + " headers; with outputType=STREAM_LIST an Iterator of those Maps over all" + + " pages. For a DML statement the number of affected rows as a Long")) public class GoogleBigQuerySQLEndpoint extends DefaultEndpoint { @UriParam diff --git a/components/camel-google/camel-google-firestore/src/generated/resources/META-INF/org/apache/camel/component/google/firestore/google-firestore.json b/components/camel-google/camel-google-firestore/src/generated/resources/META-INF/org/apache/camel/component/google/firestore/google-firestore.json index a3bad9de1c88..d91df504f7b0 100644 --- a/components/camel-google/camel-google-firestore/src/generated/resources/META-INF/org/apache/camel/component/google/firestore/google-firestore.json +++ b/components/camel-google/camel-google-firestore/src/generated/resources/META-INF/org/apache/camel/component/google/firestore/google-firestore.json @@ -58,6 +58,11 @@ "CamelGoogleFirestoreMerge": { "index": 15, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "false", "description": "When true, merge the data with existing document data instead of overwriting.", "constantName": "org.apache.camel.component.google.firestore.GoogleFirestoreConstants#MERGE" }, "CamelGoogleFirestoreMergeFields": { "index": 16, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.List<String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "List of field paths to merge when using merge option.", "constantName": "org.apache.camel.component.google.firestore.GoogleFirestoreConstants#MERGE_FIELDS" } }, + "bodyTypes": { + "consumerOut": { "carriers": [ "map" ], "description": "The fields of the document as a Map, one message per document, with its id, path and times in headers, and with realtimeUpdates the change type. Numbers are Long or Double, a timestamp a com.google.cloud.Timestamp" }, + "producerIn": { "carriers": [ "map", "text" ], "dependsOn": [ "operation" ], "description": "The fields to write for setDocument (the default), createDocument and updateDocument: a Map, or JSON object text, which is parsed into a Map. Bytes, a stream, a List, a POJO or no body fail: unmarshal it first. The other operations take their input from options and headers" }, + "producerOut": { "carriers": [ "map" ], "byOption": [ { "option": "operation", "value": "getDocumentById", "carriers": [ "map", "null" ] }, { "option": "operation", "value": "deleteDocument", "carriers": [ "value" ], "javaType": "java.lang.Boolean" }, { "option": "operation", "value": "queryCollection", "carriers": [ "list" ], "javaType": "java.util.List<java.util.Map<java.lang.String, java.lang.Object>>" }, { "option": "operation", "value": "listDocuments", "carriers": [ "list" ], " [...] + }, "properties": { "collectionName": { "index": 0, "kind": "path", "displayName": "Collection Name", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.firestore.GoogleFirestoreConfiguration", "configurationField": "configuration", "description": "The collection name to use" }, "databaseId": { "index": 1, "kind": "parameter", "displayName": "Database Id", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.firestore.GoogleFirestoreConfiguration", "configurationField": "configuration", "description": "The Firestore database ID. If not specified, the default database '(default)' will be used." }, diff --git a/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreEndpoint.java b/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreEndpoint.java index 8ed09ffd80cc..5d668adaf34d 100644 --- a/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreEndpoint.java +++ b/components/camel-google/camel-google-firestore/src/main/java/org/apache/camel/component/google/firestore/GoogleFirestoreEndpoint.java @@ -23,6 +23,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -40,6 +43,37 @@ import org.slf4j.LoggerFactory; @UriEndpoint(firstVersion = "4.19.0", scheme = "google-firestore", title = "Google Firestore", syntax = "google-firestore:collectionName", category = { Category.CLOUD, Category.DATABASE }, headersClass = GoogleFirestoreConstants.class) +@BodyTypes(consumerOut = @BodyType(value = Carrier.MAP, + description = "The fields of the document as a Map, one message per document, with its id," + + " path and times in headers, and with realtimeUpdates the change type." + + " Numbers are Long or Double, a timestamp a com.google.cloud.Timestamp"), + producerIn = @BodyType(value = { Carrier.MAP, Carrier.TEXT }, dependsOn = "operation", + description = "The fields to write for setDocument (the default), createDocument and" + + " updateDocument: a Map, or JSON object text, which is parsed into a Map." + + " Bytes, a stream, a List, a POJO or no body fail: unmarshal it first. The" + + " other operations take their input from options and headers"), + producerOut = @BodyType(value = Carrier.MAP, + byOption = { + @BodyType.When(option = "operation", value = "getDocumentById", + carriers = { Carrier.MAP, Carrier.NULL }), + @BodyType.When(option = "operation", value = "deleteDocument", + carriers = Carrier.VALUE, javaType = "java.lang.Boolean"), + @BodyType.When(option = "operation", value = "queryCollection", + carriers = Carrier.LIST, + javaType = "java.util.List<java.util.Map<java.lang.String, java.lang.Object>>"), + @BodyType.When(option = "operation", value = "listDocuments", + carriers = Carrier.LIST, + javaType = "java.util.List<java.util.Map<java.lang.String, java.lang.Object>>"), + @BodyType.When(option = "operation", value = "listCollections", + carriers = Carrier.LIST, + javaType = "java.util.List<java.lang.String>") }, + description = "The Map of the fields written for setDocument, createDocument and" + + " updateDocument (JSON text is now the parsed Map), with the document id" + + " and path in headers. By the operation: the fields of the document or" + + " null when it does not exist for getDocumentById, true for" + + " deleteDocument, a List of Maps with _id and _path entries for" + + " queryCollection and listDocuments, and the collection ids for" + + " listCollections")) public class GoogleFirestoreEndpoint extends ScheduledPollEndpoint implements EndpointServiceLocation { private static final Logger LOG = LoggerFactory.getLogger(GoogleFirestoreEndpoint.class); diff --git a/components/camel-google/camel-google-functions/src/generated/resources/META-INF/org/apache/camel/component/google/functions/google-functions.json b/components/camel-google/camel-google-functions/src/generated/resources/META-INF/org/apache/camel/component/google/functions/google-functions.json index 8ad9329d9503..1d2e83c5a08a 100644 --- a/components/camel-google/camel-google-functions/src/generated/resources/META-INF/org/apache/camel/component/google/functions/google-functions.json +++ b/components/camel-google/camel-google-functions/src/generated/resources/META-INF/org/apache/camel/component/google/functions/google-functions.json @@ -34,6 +34,10 @@ "CamelGoogleCloudFunctionsSourceArchiveUrl": { "index": 3, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The Google Cloud Storage URL, starting with gs:\/\/, pointing to the zip archive which contains the function. Used for createFunction operation.", "constantName": "org.apache.camel.component.google.functions.GoogleCloudF [...] "CamelGoogleCloudFunctionsResponseObject": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Object", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Functions Client invocation", "constantName": "org.apache.camel.component.google.functions.GoogleCloudFunctionsConstants#RESPONSE_OBJECT" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream" ], "dependsOn": [ "operation" ], "byOption": [ { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "The data to call the function with, for callFunction (the default), converted to text: a Map or a POJO is sent as its toString(), so marshal it first, and no body fails. The other operations take their input from options and headers. With pojoRequest=true the request object of the operation, such [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "byOption": [ { "option": "operation", "value": "listFunctions", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.functions.v1.CloudFunction>" }, { "option": "operation", "value": "getFunction", "carriers": [ "pojo" ], "javaType": "com.google.cloud.functions.v1.CloudFunction" }, { "option": "operation", "value": "createFunction", "carriers": [ "pojo" ], "javaType": "com.google.cloud.functions [...] + }, "properties": { "functionName": { "index": 0, "kind": "path", "displayName": "Function Name", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.functions.GoogleCloudFunctionsConfiguration", "configurationField": "configuration", "description": "The user-defined name of the function" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.functions.GoogleCloudFunctionsConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service account" }, diff --git a/components/camel-google/camel-google-functions/src/main/java/org/apache/camel/component/google/functions/GoogleCloudFunctionsEndpoint.java b/components/camel-google/camel-google-functions/src/main/java/org/apache/camel/component/google/functions/GoogleCloudFunctionsEndpoint.java index a97f952fde4e..5873fa6e7ed2 100644 --- a/components/camel-google/camel-google-functions/src/main/java/org/apache/camel/component/google/functions/GoogleCloudFunctionsEndpoint.java +++ b/components/camel-google/camel-google-functions/src/main/java/org/apache/camel/component/google/functions/GoogleCloudFunctionsEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -37,6 +40,41 @@ import org.apache.camel.util.ObjectHelper; syntax = "google-functions:functionName", category = { Category.CLOUD }, producerOnly = true, headersClass = GoogleCloudFunctionsConstants.class) +@BodyTypes(producerIn = @BodyType(value = { Carrier.TEXT, Carrier.BYTES, Carrier.STREAM }, dependsOn = "operation", + byOption = @BodyType.When(option = "pojoRequest", value = "true", + carriers = Carrier.POJO), + description = "The data to call the function with, for callFunction (the default)," + + " converted to text: a Map or a POJO is sent as its toString(), so marshal" + + " it first, and no body fails. The other operations take their input from" + + " options and headers. With pojoRequest=true the request object of the" + + " operation, such as a CallFunctionRequest"), + producerOut = @BodyType(value = Carrier.TEXT, javaType = "java.lang.String", + byOption = { + @BodyType.When(option = "operation", value = "listFunctions", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.functions.v1.CloudFunction>"), + @BodyType.When(option = "operation", value = "getFunction", + carriers = Carrier.POJO, + javaType = "com.google.cloud.functions.v1.CloudFunction"), + @BodyType.When(option = "operation", value = "createFunction", + carriers = Carrier.POJO, + javaType = "com.google.cloud.functions.v1.CloudFunction"), + @BodyType.When(option = "operation", value = "updateFunction", + carriers = Carrier.POJO, + javaType = "com.google.cloud.functions.v1.CloudFunction"), + @BodyType.When(option = "operation", value = "deleteFunction", + carriers = Carrier.POJO, + javaType = "com.google.protobuf.Empty"), + @BodyType.When(option = "operation", value = "generateDownloadUrl", + carriers = Carrier.TEXT, javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "generateUploadUrl", + carriers = Carrier.TEXT, javaType = "java.lang.String") }, + description = "The result of the function as text for callFunction, with the whole" + + " CallFunctionResponse, which has the error of a failed call, in the" + + " CamelGoogleCloudFunctionsResponseObject header. By the operation: a" + + " List of CloudFunction for listFunctions, the CloudFunction for" + + " getFunction, createFunction and updateFunction, Empty for" + + " deleteFunction and the signed URL as text for the URL operations")) public class GoogleCloudFunctionsEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/component/google/secret/manager/google-secret-manager.json b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/component/google/secret/manager/google-secret-manager.json index 011cbeb11f4a..dd66abba9d34 100644 --- a/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/component/google/secret/manager/google-secret-manager.json +++ b/components/camel-google/camel-google-secret-manager/src/generated/resources/META-INF/org/apache/camel/component/google/secret/manager/google-secret-manager.json @@ -33,6 +33,10 @@ "CamelGoogleSecretManagerSecretId": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The id of the secret", "constantName": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConstants#SECRET_ID" }, "CamelGoogleSecretManagerVersionId": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": "latest", "description": "The version of the secret", "constantName": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConstants#VERSION_ID" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "getSecretVersion", "carriers": [ "any" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "any" ] } ], "description": "The value of the secret for createSecret, the default operation, as text: bytes, a stream or a file are read as text, a Map or a POJO is stored as its toString() [...] + "producerOut": { "carriers": [ "pojo" ], "javaType": "com.google.cloud.secretmanager.v1.SecretVersion", "byOption": [ { "option": "operation", "value": "getSecretVersion", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "deleteSecret", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "pojo" ] } ], "description": "The SecretVersion of the Google SDK that createSecret added. The value of the secret [...] + }, "properties": { "project": { "index": 0, "kind": "path", "displayName": "Project", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConfiguration", "configurationField": "configuration", "description": "The Google Cloud Project Id name related to the Secret Manager" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.secret.manager.GoogleSecretManagerConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service acc [...] diff --git a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerEndpoint.java b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerEndpoint.java index cd30a79bb925..5b952e89c039 100644 --- a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerEndpoint.java +++ b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; @@ -40,6 +43,30 @@ import org.apache.camel.util.ObjectHelper; @Metadata(annotations = { "vault=google-secret-manager", }) +@BodyTypes(producerIn = @BodyType(value = { Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE }, + byOption = { + @BodyType.When(option = "operation", value = "getSecretVersion", + carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "deleteSecret", carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "listSecrets", carriers = Carrier.ANY) }, + description = "The value of the secret for createSecret, the default operation, as text: bytes," + + " a stream or a file are read as text, a Map or a POJO is stored as its" + + " toString(), so marshal it first, and no body fails. The other operations take" + + " the secret id from the CamelGoogleSecretManagerSecretId header. With" + + " pojoRequest=true the body is the request of the Google SDK for the operation," + + " such as an AddSecretVersionRequest"), + producerOut = @BodyType(value = Carrier.POJO, javaType = "com.google.cloud.secretmanager.v1.SecretVersion", + byOption = { + @BodyType.When(option = "operation", value = "getSecretVersion", + carriers = Carrier.TEXT, javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "deleteSecret", + carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "listSecrets", + carriers = Carrier.POJO) }, + description = "The SecretVersion of the Google SDK that createSecret added. The value of the" + + " secret as text for getSecretVersion: unmarshal a JSON secret to read its" + + " fields. A ListSecretsPagedResponse for listSecrets, whose iterateAll() gives" + + " the Secrets; deleteSecret leaves the body unchanged")) public class GoogleSecretManagerEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-google/camel-google-speech-to-text/src/generated/resources/META-INF/org/apache/camel/component/google/speechtotext/google-speech-to-text.json b/components/camel-google/camel-google-speech-to-text/src/generated/resources/META-INF/org/apache/camel/component/google/speechtotext/google-speech-to-text.json index da8c71596a65..88beaa3876eb 100644 --- a/components/camel-google/camel-google-speech-to-text/src/generated/resources/META-INF/org/apache/camel/component/google/speechtotext/google-speech-to-text.json +++ b/components/camel-google/camel-google-speech-to-text/src/generated/resources/META-INF/org/apache/camel/component/google/speechtotext/google-speech-to-text.json @@ -31,6 +31,10 @@ "CamelGoogleCloudSpeechToTextOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextOperations", "enum": [ "recognize" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform", "constantName": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConstants#O [...] "CamelGoogleCloudSpeechToTextResponseObject": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "com.google.cloud.speech.v1.RecognizeResponse", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Cloud Speech-to-Text API invocation", "constantName": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConstants# [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "bytes", "stream", "file" ], "byOption": [ { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ], "javaType": "com.google.cloud.speech.v1.RecognizeRequest" } ], "description": "The audio to transcribe, sent inline in the encoding and sample rate of the encoding and sampleRateHertz options (LINEAR16 by default). A stream or a file is read into bytes and a String is sent as its bytes, a Map, a POJO or no body fails. With pojoRequest=true a Rec [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "description": "The transcript: the best alternative of each result, one line per result, or an empty String when nothing is recognized, also with pojoRequest=true. The RecognizeResponse is in the CamelGoogleCloudSpeechToTextResponseObject header" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConfiguration", "configurationField": "configuration", "description": "The operation name" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.speechtotext.GoogleCloudSpeechToTextConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service a [...] diff --git a/components/camel-google/camel-google-speech-to-text/src/main/java/org/apache/camel/component/google/speechtotext/GoogleCloudSpeechToTextEndpoint.java b/components/camel-google/camel-google-speech-to-text/src/main/java/org/apache/camel/component/google/speechtotext/GoogleCloudSpeechToTextEndpoint.java index 21a6f03c5826..e0b35c965c3c 100644 --- a/components/camel-google/camel-google-speech-to-text/src/main/java/org/apache/camel/component/google/speechtotext/GoogleCloudSpeechToTextEndpoint.java +++ b/components/camel-google/camel-google-speech-to-text/src/main/java/org/apache/camel/component/google/speechtotext/GoogleCloudSpeechToTextEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,6 +37,19 @@ import org.apache.camel.util.ObjectHelper; syntax = "google-speech-to-text:operation", category = { Category.CLOUD, Category.AI }, producerOnly = true, headersClass = GoogleCloudSpeechToTextConstants.class) +@BodyTypes(producerIn = @BodyType(value = { Carrier.BYTES, Carrier.STREAM, Carrier.FILE }, + byOption = @BodyType.When(option = "pojoRequest", value = "true", carriers = Carrier.POJO, + javaType = "com.google.cloud.speech.v1.RecognizeRequest"), + description = "The audio to transcribe, sent inline in the encoding and sample rate of the" + + " encoding and sampleRateHertz options (LINEAR16 by default). A stream or a" + + " file is read into bytes and a String is sent as its bytes, a Map, a POJO or" + + " no body fails. With pojoRequest=true a RecognizeRequest of the Google Cloud" + + " SDK: another body fails"), + producerOut = @BodyType(value = Carrier.TEXT, javaType = "java.lang.String", + description = "The transcript: the best alternative of each result, one line per result," + + " or an empty String when nothing is recognized, also with pojoRequest=true." + + " The RecognizeResponse is in the" + + " CamelGoogleCloudSpeechToTextResponseObject header")) public class GoogleCloudSpeechToTextEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-google/camel-google-text-to-speech/src/generated/resources/META-INF/org/apache/camel/component/google/texttospeech/google-text-to-speech.json b/components/camel-google/camel-google-text-to-speech/src/generated/resources/META-INF/org/apache/camel/component/google/texttospeech/google-text-to-speech.json index 788442b9e7e1..6b7c7c2d758d 100644 --- a/components/camel-google/camel-google-text-to-speech/src/generated/resources/META-INF/org/apache/camel/component/google/texttospeech/google-text-to-speech.json +++ b/components/camel-google/camel-google-text-to-speech/src/generated/resources/META-INF/org/apache/camel/component/google/texttospeech/google-text-to-speech.json @@ -31,6 +31,10 @@ "CamelGoogleCloudTextToSpeechOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpeechOperations", "enum": [ "synthesize", "listVoices" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The operation to perform", "constantName": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSp [...] "CamelGoogleCloudTextToSpeechResponseObject": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "com.google.cloud.texttospeech.v1.SynthesizeSpeechResponse", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Cloud Text-to-Speech API invocation", "constantName": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpe [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "synthesize", "carriers": [ "text", "bytes", "stream", "file" ] }, { "option": "operation", "value": "listVoices", "carriers": [ "any" ] }, { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ], "javaType": "com.google.cloud.texttospeech.v1.SynthesizeSpeechRequest" } ], "description": "The text to speak for synthesize: bytes, a stream or a file are read as text, a Map or a POJO is spok [...] + "producerOut": { "carriers": [ "bytes", "list" ], "byOption": [ { "option": "operation", "value": "synthesize", "carriers": [ "bytes" ], "javaType": "byte[]" }, { "option": "operation", "value": "listVoices", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.texttospeech.v1.Voice>" }, { "option": "pojoRequest", "value": "true", "carriers": [ "bytes" ], "javaType": "byte[]" } ], "description": "The audio of synthesize as bytes, in the audioEncoding option (MP3 by de [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpeechConfiguration", "configurationField": "configuration", "description": "The operation name" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.texttospeech.GoogleCloudTextToSpeechConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service a [...] diff --git a/components/camel-google/camel-google-text-to-speech/src/main/java/org/apache/camel/component/google/texttospeech/GoogleCloudTextToSpeechEndpoint.java b/components/camel-google/camel-google-text-to-speech/src/main/java/org/apache/camel/component/google/texttospeech/GoogleCloudTextToSpeechEndpoint.java index 861be3ffca33..d97c942a3b12 100644 --- a/components/camel-google/camel-google-text-to-speech/src/main/java/org/apache/camel/component/google/texttospeech/GoogleCloudTextToSpeechEndpoint.java +++ b/components/camel-google/camel-google-text-to-speech/src/main/java/org/apache/camel/component/google/texttospeech/GoogleCloudTextToSpeechEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,6 +37,31 @@ import org.apache.camel.util.ObjectHelper; syntax = "google-text-to-speech:operation", category = { Category.CLOUD, Category.AI }, producerOnly = true, headersClass = GoogleCloudTextToSpeechConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + byOption = { + @BodyType.When(option = "operation", value = "synthesize", + carriers = { + Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE }), + @BodyType.When(option = "operation", value = "listVoices", carriers = Carrier.ANY), + @BodyType.When(option = "pojoRequest", value = "true", carriers = Carrier.POJO, + javaType = "com.google.cloud.texttospeech.v1.SynthesizeSpeechRequest") }, + description = "The text to speak for synthesize: bytes, a stream or a file are read as" + + " text, a Map or a POJO is spoken as its toString(), so take the text out of" + + " it first, and no body fails. listVoices does not use the body. With" + + " pojoRequest=true a SynthesizeSpeechRequest of the Google Cloud SDK, whatever" + + " the operation: another body fails"), + producerOut = @BodyType(value = { Carrier.BYTES, Carrier.LIST }, + byOption = { + @BodyType.When(option = "operation", value = "synthesize", carriers = Carrier.BYTES, + javaType = "byte[]"), + @BodyType.When(option = "operation", value = "listVoices", carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.texttospeech.v1.Voice>"), + @BodyType.When(option = "pojoRequest", value = "true", carriers = Carrier.BYTES, + javaType = "byte[]") }, + description = "The audio of synthesize as bytes, in the audioEncoding option (MP3 by" + + " default), with the SynthesizeSpeechResponse in the" + + " CamelGoogleCloudTextToSpeechResponseObject header. The List of the voices" + + " for listVoices, of the languageCode option (en-US by default)")) public class GoogleCloudTextToSpeechEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-google/camel-google-vertexai/src/generated/resources/META-INF/org/apache/camel/component/google/vertexai/google-vertexai.json b/components/camel-google/camel-google-vertexai/src/generated/resources/META-INF/org/apache/camel/component/google/vertexai/google-vertexai.json index 88378fbf4f7a..947bfc7fd6b5 100644 --- a/components/camel-google/camel-google-vertexai/src/generated/resources/META-INF/org/apache/camel/component/google/vertexai/google-vertexai.json +++ b/components/camel-google/camel-google-vertexai/src/generated/resources/META-INF/org/apache/camel/component/google/vertexai/google-vertexai.json @@ -77,6 +77,10 @@ "CamelGoogleVertexAIRawResponse": { "index": 30, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The raw JSON response from rawPredict operation", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#RAW_RESPONSE" }, "CamelGoogleVertexAIAnthropicVersion": { "index": 31, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Anthropic API version for Claude models", "constantName": "org.apache.camel.component.google.vertexai.GoogleVertexAIConstants#ANTHROPIC_VERSION" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "generateEmbeddings", "carriers": [ "text", "bytes", "stream", "file", "list" ] }, { "option": "operation", "value": "generateMultimodal", "carriers": [ "text", "bytes" ] }, { "option": "operation", "value": "rawPredict", "carriers": [ "text", "map" ] }, { "option": "operation", "value": "streamRawPredict", "carriers": [ "text", "map" ] } ], "description": "The prompt fo [...] + "producerOut": { "carriers": [ "text" ], "byOption": [ { "option": "streamOutputMode", "value": "chunks", "carriers": [ "list" ], "javaType": "java.util.List<String>" }, { "option": "operation", "value": "generateImage", "carriers": [ "list" ], "javaType": "java.util.List<com.google.genai.types.Image>" }, { "option": "operation", "value": "generateEmbeddings", "carriers": [ "list" ], "javaType": "java.util.List<java.util.List<Float>>" } ], "description": "The text the model answers f [...] + }, "properties": { "projectId": { "index": 0, "kind": "path", "displayName": "Project Id", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vertexai.GoogleVertexAIConfiguration", "configurationField": "configuration", "description": "Google Cloud Project ID" }, "location": { "index": 1, "kind": "path", "displayName": "Location", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vertexai.GoogleVertexAIConfiguration", "configurationField": "configuration", "description": "Google Cloud location\/region (e.g., us-central1)" }, diff --git a/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIEndpoint.java b/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIEndpoint.java index 2ecff75bd7c5..be31a47c201d 100644 --- a/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIEndpoint.java +++ b/components/camel-google/camel-google-vertexai/src/main/java/org/apache/camel/component/google/vertexai/GoogleVertexAIEndpoint.java @@ -24,6 +24,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -42,6 +45,47 @@ import org.slf4j.LoggerFactory; syntax = "google-vertexai:projectId:location:modelId", category = { Category.AI, Category.CLOUD }, headersClass = GoogleVertexAIConstants.class, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = { Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE }, + byOption = { + @BodyType.When(option = "operation", value = "generateEmbeddings", + carriers = { + Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE, + Carrier.LIST }), + @BodyType.When(option = "operation", value = "generateMultimodal", + carriers = { Carrier.TEXT, Carrier.BYTES }), + @BodyType.When(option = "operation", value = "rawPredict", + carriers = { Carrier.TEXT, Carrier.MAP }), + @BodyType.When(option = "operation", value = "streamRawPredict", + carriers = { Carrier.TEXT, Carrier.MAP }) }, + description = "The prompt for generateText, the default, and the other generate operations," + + " unless the CamelGoogleVertexAIPrompt header has it: bytes, a stream or a" + + " file are read as text, a Map or a POJO is sent as its toString(), and no" + + " body fails. generateEmbeddings also takes a List of texts. generateMultimodal" + + " takes the text, or the bytes of an image with the" + + " CamelGoogleVertexAIMediaMimeType header, only when the" + + " CamelGoogleVertexAIMediaData and CamelGoogleVertexAIMediaGcsUri headers are" + + " not set: a stream or a file is not used. rawPredict and streamRawPredict take" + + " the JSON request as a String or a Map, or a plain text prompt: bytes, a" + + " stream or a file fail, so convert them to a String first"), + producerOut = @BodyType(value = Carrier.TEXT, + byOption = { + @BodyType.When(option = "streamOutputMode", value = "chunks", + carriers = Carrier.LIST, + javaType = "java.util.List<String>"), + @BodyType.When(option = "operation", value = "generateImage", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.genai.types.Image>"), + @BodyType.When(option = "operation", value = "generateEmbeddings", + carriers = Carrier.LIST, + javaType = "java.util.List<java.util.List<Float>>") }, + description = "The text the model answers for generateText, the default, and the other" + + " generate operations, JSON with jsonMode=true, with the token counts and the" + + " finish reason in headers. generateChatStreaming joins the chunks, or gives" + + " the List of them with streamOutputMode=chunks. The List of the generated" + + " images for generateImage, and one vector of Floats per input text for" + + " generateEmbeddings. rawPredict and streamRawPredict give the JSON the model" + + " answers, or for publisher anthropic the text of Claude with the JSON in the" + + " CamelGoogleVertexAIRawResponse header")) public class GoogleVertexAIEndpoint extends ScheduledPollEndpoint implements EndpointServiceLocation { private static final Logger LOG = LoggerFactory.getLogger(GoogleVertexAIEndpoint.class); diff --git a/components/camel-google/camel-google-vision/src/generated/resources/META-INF/org/apache/camel/component/google/vision/google-vision.json b/components/camel-google/camel-google-vision/src/generated/resources/META-INF/org/apache/camel/component/google/vision/google-vision.json index 128cd7f08be5..f9ab7f6eeebe 100644 --- a/components/camel-google/camel-google-vision/src/generated/resources/META-INF/org/apache/camel/component/google/vision/google-vision.json +++ b/components/camel-google/camel-google-vision/src/generated/resources/META-INF/org/apache/camel/component/google/vision/google-vision.json @@ -31,6 +31,10 @@ "CamelGoogleCloudVisionOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "org.apache.camel.component.google.vision.GoogleCloudVisionOperations", "enum": [ "labelDetection", "textDetection", "faceDetection", "landmarkDetection", "logoDetection", "safeSearchDetection", "imagePropertiesDetection", "webDetection", "objectLocalization", "cropHintsDetection", "documentTextDetection" ], "deprecated": false, "depre [...] "CamelGoogleCloudVisionResponseObject": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "com.google.cloud.vision.v1.AnnotateImageResponse", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The response object resulting from the Google Cloud Vision API invocation", "constantName": "org.apache.camel.component.google.vision.GoogleCloudVisionConstants#RESPONSE_OBJECT" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "bytes", "stream", "file" ], "byOption": [ { "option": "pojoRequest", "value": "true", "carriers": [ "pojo" ], "javaType": "com.google.cloud.vision.v1.AnnotateImageRequest" } ], "description": "The image to annotate, sent inline. A stream or a file is read into bytes and a String is sent as its bytes, a Map, a POJO or no body fails. With pojoRequest=true an AnnotateImageRequest of the Google Cloud SDK: another body fails" }, + "producerOut": { "carriers": [ "list", "pojo" ], "byOption": [ { "option": "operation", "value": "labelDetection", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>" }, { "option": "operation", "value": "textDetection", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>" }, { "option": "operation", "value": "faceDetection", "carriers": [ "list" ], "javaType": "java.util.List<com.google.cloud. [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vision.GoogleCloudVisionConfiguration", "configurationField": "configuration", "description": "The operation name" }, "serviceAccountKey": { "index": 1, "kind": "parameter", "displayName": "Service Account Key", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.google.vision.GoogleCloudVisionConfiguration", "configurationField": "configuration", "description": "Service account key to authenticate an application as a service account" }, diff --git a/components/camel-google/camel-google-vision/src/main/java/org/apache/camel/component/google/vision/GoogleCloudVisionEndpoint.java b/components/camel-google/camel-google-vision/src/main/java/org/apache/camel/component/google/vision/GoogleCloudVisionEndpoint.java index d1639ade92dd..2374af3911a8 100644 --- a/components/camel-google/camel-google-vision/src/main/java/org/apache/camel/component/google/vision/GoogleCloudVisionEndpoint.java +++ b/components/camel-google/camel-google-vision/src/main/java/org/apache/camel/component/google/vision/GoogleCloudVisionEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,6 +37,55 @@ import org.apache.camel.util.ObjectHelper; syntax = "google-vision:operation", category = { Category.CLOUD, Category.AI }, producerOnly = true, headersClass = GoogleCloudVisionConstants.class) +@BodyTypes(producerIn = @BodyType(value = { Carrier.BYTES, Carrier.STREAM, Carrier.FILE }, + byOption = @BodyType.When(option = "pojoRequest", value = "true", carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.AnnotateImageRequest"), + description = "The image to annotate, sent inline. A stream or a file is read into bytes" + + " and a String is sent as its bytes, a Map, a POJO or no body fails. With" + + " pojoRequest=true an AnnotateImageRequest of the Google Cloud SDK: another" + + " body fails"), + producerOut = @BodyType(value = { Carrier.LIST, Carrier.POJO }, + byOption = { + @BodyType.When(option = "operation", value = "labelDetection", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>"), + @BodyType.When(option = "operation", value = "textDetection", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>"), + @BodyType.When(option = "operation", value = "faceDetection", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.vision.v1.FaceAnnotation>"), + @BodyType.When(option = "operation", value = "landmarkDetection", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>"), + @BodyType.When(option = "operation", value = "logoDetection", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.vision.v1.EntityAnnotation>"), + @BodyType.When(option = "operation", value = "objectLocalization", + carriers = Carrier.LIST, + javaType = "java.util.List<com.google.cloud.vision.v1.LocalizedObjectAnnotation>"), + @BodyType.When(option = "operation", value = "safeSearchDetection", + carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.SafeSearchAnnotation"), + @BodyType.When(option = "operation", value = "imagePropertiesDetection", + carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.ImageProperties"), + @BodyType.When(option = "operation", value = "webDetection", carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.WebDetection"), + @BodyType.When(option = "operation", value = "cropHintsDetection", + carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.CropHintsAnnotation"), + @BodyType.When(option = "operation", value = "documentTextDetection", + carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.TextAnnotation"), + @BodyType.When(option = "pojoRequest", value = "true", carriers = Carrier.POJO, + javaType = "com.google.cloud.vision.v1.AnnotateImageResponse") }, + description = "The annotations of the operation: a List of them for the detections that" + + " find several things, such as labelDetection, and one annotation of the" + + " Google Cloud SDK for the others, such as the SafeSearchAnnotation of" + + " safeSearchDetection. The whole AnnotateImageResponse is in the" + + " CamelGoogleCloudVisionResponseObject header, and is the body with" + + " pojoRequest=true")) public class GoogleCloudVisionEndpoint extends DefaultEndpoint implements EndpointServiceLocation { @UriParam diff --git a/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json b/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json index ced6bc67d8e1..e07af73a135e 100644 --- a/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json +++ b/components/camel-hashicorp-vault/src/generated/resources/META-INF/org/apache/camel/component/hashicorp/vault/hashicorp-vault.json @@ -33,6 +33,10 @@ "CamelHashicorpVaultSecretPath": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the desired secret path as header.", "constantName": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConstants#SECRET_PATH" }, "CamelHashicorpVaultSecretVersion": { "index": 2, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the desired secret version as header.", "constantName": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConstants#SECRET_VERSION" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "map", "pojo" ], "byOption": [ { "option": "operation", "value": "getSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "any" ] } ], "description": "The fields of the secret for createSecret, the default operation: a Map of the keys and values, or a POJO written as JSON. Text, bytes, a stream, a file or a List fail, so unmarshal JSON f [...] + "producerOut": { "carriers": [ "unchanged" ], "byOption": [ { "option": "operation", "value": "getSecret", "carriers": [ "map", "null" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "list" ], "javaType": "java.util.List<java.lang.String>" } ], "description": "getSecret gives a Map with the fields of the secret under data and its version under metadata, or no body when the secret does not exist or is deleted. listSecrets gives a List of the names of the secrets in [...] + }, "properties": { "secretsEngine": { "index": 0, "kind": "path", "displayName": "Secrets Engine", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", "configurationField": "configuration", "description": "Vault Name to be used" }, "cloud": { "index": 1, "kind": "parameter", "displayName": "Cloud", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.hashicorp.vault.HashicorpVaultConfiguration", "configurationField": "configuration", "description": "Determine if the Hashicorp Vault is deployed on Hashicorp Cloud or not" }, diff --git a/components/camel-hashicorp-vault/src/main/docs/hashicorp-vault-component.adoc b/components/camel-hashicorp-vault/src/main/docs/hashicorp-vault-component.adoc index 845a2c662568..98721af5462b 100644 --- a/components/camel-hashicorp-vault/src/main/docs/hashicorp-vault-component.adoc +++ b/components/camel-hashicorp-vault/src/main/docs/hashicorp-vault-component.adoc @@ -103,7 +103,8 @@ YAML:: ==== Getting a secret -The message body becomes the data of the secret; the `CamelHashicorpVaultSecretVersion` header reads a given +The message body becomes a Map with the fields of the secret under `data` and its version details under +`metadata`, or no body when the secret does not exist; the `CamelHashicorpVaultSecretVersion` header reads a given version instead of the latest: [tabs] diff --git a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpoint.java b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpoint.java index ce7739bac116..bcdb20601729 100644 --- a/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpoint.java +++ b/components/camel-hashicorp-vault/src/main/java/org/apache/camel/component/hashicorp/vault/HashicorpVaultEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Component; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -40,6 +43,27 @@ import org.springframework.vault.core.VaultTemplate; @Metadata(annotations = { "vault=hashicorp-vault", }) +@BodyTypes(producerIn = @BodyType(value = { Carrier.MAP, Carrier.POJO }, + byOption = { + @BodyType.When(option = "operation", value = "getSecret", carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "deleteSecret", carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "listSecrets", carriers = Carrier.ANY) }, + description = "The fields of the secret for createSecret, the default operation: a Map of the" + + " keys and values, or a POJO written as JSON. Text, bytes, a stream, a file or a" + + " List fail, so unmarshal JSON first, and no body writes an empty version. The" + + " other operations take the secret from the secretPath option or the" + + " CamelHashicorpVaultSecretPath header"), + producerOut = @BodyType(value = Carrier.UNCHANGED, + byOption = { + @BodyType.When(option = "operation", value = "getSecret", + carriers = { Carrier.MAP, Carrier.NULL }), + @BodyType.When(option = "operation", value = "listSecrets", + carriers = Carrier.LIST, + javaType = "java.util.List<java.lang.String>") }, + description = "getSecret gives a Map with the fields of the secret under data and its version" + + " under metadata, or no body when the secret does not exist or is deleted." + + " listSecrets gives a List of the names of the secrets in the engine;" + + " createSecret and deleteSecret leave the body unchanged")) public class HashicorpVaultEndpoint extends DefaultEndpoint { private VaultTemplate vaultTemplate; diff --git a/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/ibm/secrets/manager/ibm-secrets-manager.json b/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/ibm/secrets/manager/ibm-secrets-manager.json index 60e1d1c3b75d..fa2ea7fd7a2c 100644 --- a/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/ibm/secrets/manager/ibm-secrets-manager.json +++ b/components/camel-ibm/camel-ibm-secrets-manager/src/generated/resources/META-INF/org/apache/camel/component/ibm/secrets/manager/ibm-secrets-manager.json @@ -35,6 +35,10 @@ "CamelIbmSecretsManagerSecretPayload": { "index": 4, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the secret payload for update operation.", "constantName": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerConstants#SECRET_PAYLOAD" }, "CamelIbmSecretsManagerSecretData": { "index": 5, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "java.util.Map", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Set the secret data (Map) for KV secret update operation.", "constantName": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerConstants#SECRET_DATA" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "createKVSecret", "carriers": [ "map" ] }, { "option": "operation", "value": "updateSecret", "carriers": [ "text", "bytes", "stream", "file", "map" ] }, { "option": "operation", "value": "getSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "any" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "any" ] }, [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "byOption": [ { "option": "operation", "value": "getSecret", "carriers": [ "text", "map", "pojo" ] }, { "option": "operation", "value": "deleteSecret", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "listSecrets", "carriers": [ "pojo" ], "javaType": "com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.SecretMetadataPaginatedCollection" }, { "option": "operation", "value": "updateSecret", [...] + }, "properties": { "label": { "index": 0, "kind": "path", "displayName": "Label", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerConfiguration", "configurationField": "configuration", "description": "Logical name" }, "operation": { "index": 1, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerOperation", "enum": [ "createArbitrarySecret", "createKVSecret", "getSecret", "deleteSecret", "listSecrets", "updateSecret", "listSecretVersions" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.i [...] diff --git a/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerEndpoint.java b/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerEndpoint.java index 05346b983c69..fbaada0b20a0 100644 --- a/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerEndpoint.java +++ b/components/camel-ibm/camel-ibm-secrets-manager/src/main/java/org/apache/camel/component/ibm/secrets/manager/IBMSecretsManagerEndpoint.java @@ -23,6 +23,9 @@ import org.apache.camel.Component; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.DefaultEndpoint; @@ -35,6 +38,46 @@ import org.apache.camel.support.DefaultEndpoint; Category.CLOUD, Category.CLOUD }, producerOnly = true, headersClass = IBMSecretsManagerConstants.class) +@BodyTypes(producerIn = @BodyType(value = { Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE }, + byOption = { + @BodyType.When(option = "operation", value = "createKVSecret", + carriers = Carrier.MAP), + @BodyType.When(option = "operation", value = "updateSecret", + carriers = { + Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE, + Carrier.MAP }), + @BodyType.When(option = "operation", value = "getSecret", carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "deleteSecret", carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "listSecrets", carriers = Carrier.ANY), + @BodyType.When(option = "operation", value = "listSecretVersions", + carriers = Carrier.ANY) }, + description = "The payload of the secret for createArbitrarySecret, the default operation, as" + + " text: bytes, a stream or a file are read as text, a Map or a POJO is stored as" + + " its toString(), and no body fails. createKVSecret needs a Map of the keys and" + + " values: a JSON text fails, so unmarshal it first. updateSecret takes text for" + + " an arbitrary secret and a Map for a kv secret, unless the" + + " CamelIbmSecretsManagerSecretPayload or CamelIbmSecretsManagerSecretData header" + + " is set. The other operations take the secret id from a header"), + producerOut = @BodyType(value = Carrier.TEXT, javaType = "java.lang.String", + byOption = { + @BodyType.When(option = "operation", value = "getSecret", + carriers = { Carrier.TEXT, Carrier.MAP, Carrier.POJO }), + @BodyType.When(option = "operation", value = "deleteSecret", + carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "listSecrets", + carriers = Carrier.POJO, + javaType = "com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.SecretMetadataPaginatedCollection"), + @BodyType.When(option = "operation", value = "updateSecret", + carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "listSecretVersions", + carriers = Carrier.POJO, + javaType = "com.ibm.cloud.secrets_manager_sdk.secrets_manager.v2.model.SecretVersionMetadataCollection") }, + description = "The id of the new secret for createArbitrarySecret and createKVSecret. getSecret" + + " gives the payload text of an arbitrary secret, the Map of a kv secret, or the" + + " Secret of the IBM SDK for service credentials, and fails for other secret" + + " types. updateSecret gives the SecretVersion of the IBM SDK, the list" + + " operations the collection of the IBM SDK, and deleteSecret leaves the body" + + " unchanged")) public class IBMSecretsManagerEndpoint extends DefaultEndpoint { private SecretsManager secretManager;
