{ "apiVersion": "camel.apache.org/v1", "kind": "Kamelet", "metadata": { "name": "azure-cosmosdb-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,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGQ9Ik0xNC45NjkgNy41M2E2LjEzNyA2LjEzNyAwIDExLTcuMzk1LTQuNTQzIDYuMTM3IDYuMTM3IDAgMDE3LjM5NSA0LjU0M3oiIGZpbGw9Im5vbmUiLz48L2NsaXBQYXRoPjwvZGVmcz48cGF0aCBkPSJNMi45NTQgNS4yNjZhLjE3NS4xNzUgMCAwMS0uMTc2LS4xNzZBMi4wMTIgMi4wMTIgMCAwMC43NjkgMy4wODFhLjE3Ni4xNzYgMCAwMS0uMTc2LS4xNzUuMTc2LjE3NiAwIDAxLjE3Ni0uMTc2QTIuMDEyIDIuMDEyIDAgMDAyLjc3OC43MmEuMTc1LjE3NSAwIDAxLjE3Ni0uMTc2LjE3NS4xNzUgMCAwMS4xNzYuMTc2IDIuMDEyIDIuMDEyIDAgMDAyLjAwOSAyLjAwOS4xNzUuMTc1IDAgMDEuMTc2LjE3Ni4xNzUuMTc1IDAgMDEtLjE3Ni4xNzZBMi4wMTEgMi4wMTEgMCAwMDMuMTMgNS4wOWEuMTc3LjE3NyAwIDAxLS4xNzYuMTc2ek0xNS42MTEgMTcuNDU2YS4xNDEuMTQxIDAgMDEtLjE0MS0uMTQxIDEuNjA5IDEuNjA5IDAgMDAtMS42MDctMS42MDcuMTQxLjE0MSAwIDAxLS4xNDEtLjE0LjE0MS4xNDEgMCAwMS4xNDEtLjE0MSAxLjYwOCAxLjYwOCAwIDAwMS42MDctMS42MDcuMTQxLjE0MSAwIDAxLjE0MS0uMTQxLjE0MS4xNDEgMCAwMS4xNDEuMTQxIDEuNjA4IDEuNjA4IDAgMDAxLjYwNyAxLjYwNy4xNDEuMTQxIDAgMTEwIC4yODIgMS42MDkgMS42MDkgMCAwMC0xLjYwNyAxLjYwNy4xNDEuMTQxIDAgMDEtLjE0MS4xNHoiIGZpbGw9IiM1MGU2ZmYiLz48cGF0aCBkPSJNMTQuOTY5IDcuNTNhNi4xMzcgNi4xMzcgMCAxMS03LjM5NS00LjU0MyA2LjEzNyA2LjEzNyAwIDAxNy4zOTUgNC41NDN6IiBmaWxsPSJ1cmwoI2EpIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIiBmaWxsPSIjZjJmMmYyIj48cGF0aCBkPSJNNS43MDkgMTMuMTE1YTEuNjM4IDEuNjM4IDAgMTAuMDA1LTMuMjc1IDEuMzA3IDEuMzA3IDAgMDAuMDA3LS4xNEExLjY1MSAxLjY1MSAwIDAwNC4wNiA4LjA2NEgyLjgzMmE2LjI1MSA2LjI1MSAwIDAwMS41OTUgNS4wNTF6TTE1LjA0NSA3LjgxNWMwLS4wMTUgMC0uMDMtLjAwNy0uMDQ0YTUuOTc4IDUuOTc4IDAgMDAtMS40MDYtMi44OCAxLjgyNSAxLjgyNSAwIDAwLS4yODktLjA5IDEuODA2IDEuODA2IDAgMDAtMi4zIDEuNjYzIDIgMiAwIDAwLS4yLS4wMTMgMS43MzcgMS43MzcgMCAwMC0uNTgxIDMuMzc0IDEuNDUxIDEuNDUxIDAgMDAuNTQxLjFoMi4wM2ExMy40NTMgMTMuNDUzIDAgMDAyLjIxMi0yLjExeiIvPjwvZz48cGF0aCBkPSJNMTcuMTkxIDMuODMyYy0uNjI5LTEuMDQ3LTIuMS0xLjQ1NS00LjE1NS0xLjE0OWExNC42MDYgMTQuNjA2IDAgMDAtMi4wODIuNDUyIDYuNDU2IDYuNDU2IDAgMDExLjUyOC43NjdjLjI0MS0uMDUzLjQ4My0uMTE2LjcxNS0uMTUxYTcuNDkgNy40OSAwIDAxMS4xMDMtLjA4OSAyLjE4OCAyLjE4OCAwIDAxMS45NTkuNzI1Yy4zODMuNjM4LjA2IDEuNzI5LS44ODYgM2ExNi43MjMgMTYuNzIzIDAgMDEtNC43NDkgNC4wNTFBMTYuNzU4IDE2Ljc1OCAwIDAxNC44IDEzLjdjLTEuNTY0LjIzNC0yLjY4MiAwLTMuMDY1LS42MzZzLS4wNi0xLjczLjg4Ni0yLjk5NWMuMTE3LS4xNTcuMTQ2LS4yMzQuMjc5LS4zOTJhNi4yNTIgNi4yNTIgMCAwMS4wMjYtMS42MyAxMS41NTIgMTEuNTUyIDAgMDAtMS4xNyAxLjM3MkMuNTE3IDExLjA3Ni4xODEgMTIuNTY2LjgwOSAxMy42MTNhMy4xNjUgMy4xNjUgMCAwMDIuOSAxLjI0OSA4LjQzNCA4LjQzNCAwIDAwMS4yNTEtLjEgMTcuODU1IDE3Ljg1NSAwIDAwNi4yMTktMi40QTE3LjgwOCAxNy44MDggMCAwMDE2LjI0IDguMDNjMS4yNDMtMS42NjEgMS41NzktMy4xNS45NTEtNC4xOTh6IiBmaWxsPSIjNTBlNmZmIi8+PC9zdmc+", "camel.apache.org/provider": "Apache Software Foundation", "camel.apache.org/kamelet.group": "Azure CosmosDB", "camel.apache.org/kamelet.namespace": "Azure" }, "labels": { "camel.apache.org/kamelet.type": "source" } }, "spec": { "definition": { "title": "Azure CosmosDB Source", "description": "Consume Changes from a CosmosDB instance.", "required": [ "databaseName", "containerName", "databaseEndpoint" ], "type": "object", "properties": { "databaseName": { "title": "Database Name", "description": "The Azure Cosmos database name.", "type": "string" }, "containerName": { "title": "Container Name", "description": "The Azure Cosmos container name.", "type": "string" }, "accountKey": { "title": "Account Key", "description": "The Azure Cosmos account Key.", "type": "string", "format": "password", "x-descriptors": [ "urn:camel:group:credentials" ] }, "leaseDatabaseName": { "title": "Lease Database Name", "description": "Sets the lease container which acts as a state storage and coordinates processing the change feed across multiple workers.", "type": "string" }, "leaseContainerName": { "title": "Lease Container Name", "description": "Sets the lease database where the `leaseContainerName` is stored.", "type": "string" }, "createLeaseDatabaseIfNotExists": { "title": "Autocreate Lease Database", "description": "Sets if the component should create Cosmos lease database for the consumer automatically in case it doesn’t exist in Cosmos account.", "type": "boolean", "default": false }, "createLeaseContainerIfNotExists": { "title": "Autocreate Lease Container", "description": "Sets if the component should create Cosmos lease container for the consumer automatically in case it doesn’t exist in Cosmos database.", "type": "boolean", "default": false }, "databaseEndpoint": { "title": "Database Endpoint", "description": "Sets the Azure Cosmos database endpoint the component will connect to.", "type": "string" }, "credentialType": { "title": "Credential Type", "description": "Determines the credential strategy to adopt.", "type": "string", "enum": [ "SHARED_ACCOUNT_KEY", "AZURE_IDENTITY" ], "default": "SHARED_ACCOUNT_KEY" } } }, "dataTypes": { "out": { "default": "json", "headers": null, "types": { "json": { "format": "application-json", "description": "Json mapping of Change Feed records", "mediaType": "application/json" }, "cloudevents": { "format": "azure-cosmosdb:application-cloudevents", "description": "Data type transformer converts Azure CosmosDB Change Feed processor response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure CosmosDB Change Feed processor 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.cosmosdb.changes", "type": "string" }, "CamelCloudEventSource": { "title": "CloudEvent Source", "description": "The event source.", "type": "string", "default": "org.apache.camel.event.azure.cosmosdb.changefeed" }, "CamelCloudEventSubject": { "title": "CloudEvent Subject", "description": "The event subject.", "type": "string", "default": "org.apache.camel.event.azure.cosmosdb.changefeed" }, "CamelCloudEventTime": { "title": "CloudEvent Time", "description": "The exchange creation timestamp as event time.", "type": "string" } } } } } }, "dependencies": [ "camel:azure-cosmosdb", "camel:kamelet", "camel:jackson" ], "template": { "from": { "uri": "azure-cosmosdb:{{databaseName}}/{{containerName}}", "parameters": { "leaseDatabaseName": "{{?leaseDatabaseName}}", "leaseContainerName": "{{?leaseContainerName}}", "accountKey": "{{?accountKey}}", "createLeaseDatabaseIfNotExists": "{{createLeaseDatabaseIfNotExists}}", "createLeaseContainerIfNotExists": "{{createLeaseContainerIfNotExists}}", "databaseEndpoint": "{{databaseEndpoint}}", "credentialType": "{{credentialType}}" }, "steps": [ { "marshal": { "json": {} } }, { "to": "kamelet:sink" } ] } } }, "propertiesSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "Azure CosmosDB Source", "description": "Consume Changes from a CosmosDB instance.", "required": [ "databaseName", "containerName", "databaseEndpoint" ], "properties": { "databaseName": { "type": "string", "title": "Database Name", "description": "The Azure Cosmos database name." }, "containerName": { "type": "string", "title": "Container Name", "description": "The Azure Cosmos container name." }, "accountKey": { "type": "string", "title": "Account Key", "description": "The Azure Cosmos account Key.", "format": "password" }, "leaseDatabaseName": { "type": "string", "title": "Lease Database Name", "description": "Sets the lease container which acts as a state storage and coordinates processing the change feed across multiple workers." }, "leaseContainerName": { "type": "string", "title": "Lease Container Name", "description": "Sets the lease database where the `leaseContainerName` is stored." }, "createLeaseDatabaseIfNotExists": { "type": "boolean", "title": "Autocreate Lease Database", "description": "Sets if the component should create Cosmos lease database for the consumer automatically in case it doesn’t exist in Cosmos account.", "default": false }, "createLeaseContainerIfNotExists": { "type": "boolean", "title": "Autocreate Lease Container", "description": "Sets if the component should create Cosmos lease container for the consumer automatically in case it doesn’t exist in Cosmos database.", "default": false }, "databaseEndpoint": { "type": "string", "title": "Database Endpoint", "description": "Sets the Azure Cosmos database endpoint the component will connect to." }, "credentialType": { "type": "string", "title": "Credential Type", "description": "Determines the credential strategy to adopt.", "enum": [ "SHARED_ACCOUNT_KEY", "AZURE_IDENTITY" ], "default": "SHARED_ACCOUNT_KEY" } } } }