From 34ab2ddf81eba2367faf443ebf92805e91615e14 Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Mon, 12 Oct 2026 02:32:42 +0000 Subject: [PATCH] Add kamelet definition: azure-storage-files-source --- kamelet.json | 283 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 kamelet.json diff --git a/kamelet.json b/kamelet.json new file mode 100644 index 0000000..274d39f --- /dev/null +++ b/kamelet.json @@ -0,0 +1,283 @@ +{ + "apiVersion": "camel.apache.org/v1", + "kind": "Kamelet", + "metadata": { + "name": "azure-storage-files-source", + "annotations": { + "camel.apache.org/kamelet.support.level": "Stable", + "camel.apache.org/catalog.version": "4.22.1", + "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+", + "camel.apache.org/provider": "Apache Software Foundation", + "camel.apache.org/kamelet.group": "Azure Storage Blob", + "camel.apache.org/kamelet.namespace": "Azure" + }, + "labels": { + "camel.apache.org/kamelet.type": "source" + } + }, + "spec": { + "definition": { + "title": "Azure Storage File Source", + "description": "Consume files from Azure Storage File Shares.", + "required": [ + "accountName", + "shareName" + ], + "type": "object", + "properties": { + "accountName": { + "title": "Account Name", + "description": "The Azure Storage File Share account name.", + "type": "string", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "shareName": { + "title": "Share Name", + "description": "The Azure Storage File Share share name.", + "type": "string" + }, + "sharedKey": { + "title": "Shared Access Key", + "description": "The Azure Storage Blob access key.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "delay": { + "title": "Delay", + "description": "The number of milliseconds before the next poll of the selected blob.", + "type": "integer", + "default": 500 + }, + "deleteAfterRead": { + "title": "Auto-delete Blob", + "description": "Specifies to delete blobs after consuming them", + "type": "boolean", + "default": false + }, + "credentialType": { + "title": "Credential Type", + "description": "Determines the credential strategy to adopt.", + "type": "string", + "enum": [ + "SHARED_ACCOUNT_KEY", + "AZURE_IDENTITY", + "SHARED_KEY_CREDENTIAL", + "AZURE_SAS" + ], + "default": "SHARED_ACCOUNT_KEY" + }, + "directoryName": { + "title": "Directory Name", + "description": "The directory from where the consumer will start reading files.", + "type": "string", + "default": "." + }, + "recursive": { + "title": "Recursive Mode", + "description": "If a directory, the consumer will look for files in all the sub-directories as well.", + "type": "boolean", + "default": false + } + } + }, + "dataTypes": { + "out": { + "default": "binary", + "headers": { + "CamelFileLength": { + "title": "Azure Storage Files File Length", + "description": "A long value containing the file size", + "type": "long" + }, + "CamelFileLastModified": { + "title": "Azure Storage Files File Last Modified Date", + "description": "A Long value containing the last modified timestamp of the file.", + "type": "long" + }, + "CamelFileNameOnly": { + "title": "Azure Storage Files File Name Only", + "description": "Only the file name (the name with no leading paths).", + "type": "string" + }, + "CamelFileName": { + "title": "Azure Storage Files File Name", + "description": "Name of the consumed file as a relative file path with offset from the starting directory configured on the endpoint.", + "type": "string" + }, + "CamelFileNameConsumed": { + "title": "Azure Storage Files Consumed File Name", + "description": "The name of the file that has been consumed.", + "type": "string" + }, + "CamelFileAbsolute": { + "title": "Azure Storage Files Consumed Absolute Format", + "description": "A boolean option specifying whether the consumed file denotes an absolute path or not.", + "type": "boolean" + }, + "CamelFileAbsolutePath": { + "title": "Azure Storage Files Consumed Absolute Path", + "description": "The absolute path to the file. For relative files this path holds the relative path instead.", + "type": "string" + }, + "CamelFileExtendedAttributes": { + "title": "Azure Storage Files Extended Attributes", + "description": "Additional Metadata of the file of type Map", + "type": "object" + }, + "CamelFileContentType": { + "title": "Content Type", + "description": "The content type of the retrieved object.", + "default": "application/octet-stream", + "type": "string" + }, + "CamelFilePath": { + "title": "Azure Storage Files File Path", + "description": "The file path. For relative files this is the starting directory the relative filename. For absolute files this is the absolute path.", + "type": "string" + }, + "CamelFileRelativePath": { + "title": "Azure Storage Files File Relative Path", + "description": "The relative path.", + "type": "string" + }, + "CamelFileParent": { + "title": "Azure Storage Files File Relative Path", + "description": "The parent path.", + "type": "string" + } + }, + "types": { + "binary": { + "format": "application-octet-stream", + "description": "Default binary representation of the File retrieved from Azure Storage Files.", + "mediaType": "application/octet-stream" + }, + "cloudevents": { + "format": "azure-files:application-cloudevents", + "description": "Data type transformer converts Azure Storage Files poll response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure Storage Files poll response.", + "headers": { + "CamelCloudEventID": { + "title": "CloudEvent ID", + "description": "The Camel exchange id set as event id", + "type": "string" + }, + "CamelCloudEventType": { + "title": "CloudEvent Type", + "description": "The event type", + "default": "org.apache.camel.event.azure.storage.files.poll", + "type": "string" + }, + "CamelCloudEventSource": { + "title": "CloudEvent Source", + "description": "The event source. By default, the Host name of the share with prefix \"azure.storage.files.\".", + "type": "string" + }, + "CamelCloudEventSubject": { + "title": "CloudEvent Subject", + "description": "The event subject. Usually the Azure Storage Files file name.", + "type": "string" + }, + "CamelCloudEventTime": { + "title": "CloudEvent Time", + "description": "The exchange creation timestamp as event time.", + "type": "string" + } + } + } + } + } + }, + "dependencies": [ + "camel:azure-files", + "camel:kamelet", + "camel:core", + "camel:timer" + ], + "template": { + "from": { + "uri": "azure-files:{{accountName}}/{{shareName}}/{{directoryName}}", + "parameters": { + "sharedKey": "{{?sharedKey}}", + "credentialType": "{{credentialType}}", + "delay": "{{delay}}", + "delete": "{{deleteAfterRead}}", + "recursive": "{{recursive}}" + }, + "steps": [ + { + "to": "kamelet:sink" + } + ] + } + } + }, + "propertiesSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Azure Storage File Source", + "description": "Consume files from Azure Storage File Shares.", + "required": [ + "accountName", + "shareName" + ], + "properties": { + "accountName": { + "type": "string", + "title": "Account Name", + "description": "The Azure Storage File Share account name." + }, + "shareName": { + "type": "string", + "title": "Share Name", + "description": "The Azure Storage File Share share name." + }, + "sharedKey": { + "type": "string", + "title": "Shared Access Key", + "description": "The Azure Storage Blob access key.", + "format": "password" + }, + "delay": { + "type": "integer", + "title": "Delay", + "description": "The number of milliseconds before the next poll of the selected blob.", + "default": 500 + }, + "deleteAfterRead": { + "type": "boolean", + "title": "Auto-delete Blob", + "description": "Specifies to delete blobs after consuming them", + "default": false + }, + "credentialType": { + "type": "string", + "title": "Credential Type", + "description": "Determines the credential strategy to adopt.", + "enum": [ + "SHARED_ACCOUNT_KEY", + "AZURE_IDENTITY", + "SHARED_KEY_CREDENTIAL", + "AZURE_SAS" + ], + "default": "SHARED_ACCOUNT_KEY" + }, + "directoryName": { + "type": "string", + "title": "Directory Name", + "description": "The directory from where the consumer will start reading files.", + "default": "." + }, + "recursive": { + "type": "boolean", + "title": "Recursive Mode", + "description": "If a directory, the consumer will look for files in all the sub-directories as well.", + "default": false + } + } + } +} \ No newline at end of file