{ "apiVersion": "camel.apache.org/v1", "kind": "Kamelet", "metadata": { "name": "mongodb-sink", "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,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+", "camel.apache.org/provider": "Apache Software Foundation", "camel.apache.org/kamelet.group": "MongoDB", "camel.apache.org/kamelet.namespace": "Nosql" }, "labels": { "camel.apache.org/kamelet.type": "sink" } }, "spec": { "definition": { "title": "MongoDB Sink", "description": "Send data to MongoDB.", "required": [ "hosts", "collection", "database" ], "type": "object", "properties": { "hosts": { "title": "MongoDB Hosts", "description": "A comma-separated list of MongoDB host addresses in `host:port` format.", "type": "string" }, "collection": { "title": "MongoDB Collection", "description": "The name of the MongoDB collection to bind to this endpoint.", "type": "string" }, "password": { "title": "MongoDB Password", "description": "A user password for accessing MongoDB.", "type": "string", "format": "password", "x-descriptors": [ "urn:camel:group:credentials" ] }, "username": { "title": "MongoDB Username", "description": "A username for accessing MongoDB.", "type": "string", "x-descriptors": [ "urn:camel:group:credentials" ] }, "ssl": { "title": "Enable Ssl for Mongodb Connection", "description": "whether to enable ssl connection to mongodb.", "type": "boolean", "default": true }, "sslValidationEnabled": { "title": "Enables Ssl Certificates Validation and Host name checks.", "description": "IMPORTANT this should be disabled only in test environment since can pose security issues.", "type": "boolean", "default": true }, "database": { "title": "MongoDB Database", "description": "The name of the MongoDB database.", "type": "string" }, "writeConcern": { "title": "Write Concern", "description": "The level of acknowledgment requested from MongoDB for write operations.", "type": "string", "enum": [ "ACKNOWLEDGED", "W1", "W2", "W3", "UNACKNOWLEDGED", "JOURNALED", "MAJORITY" ] }, "createCollection": { "title": "Collection", "description": "Create a collection during initialization if it doesn't exist.", "type": "boolean", "default": false } } }, "types": { "in": { "mediaType": "application/json" } }, "dependencies": [ "camel:core", "camel:kamelet", "camel:mongodb", "camel:jackson" ], "template": { "beans": [ { "name": "local-mongodb", "type": "#class:org.apache.camel.component.mongodb.MongoDbComponent" }, { "name": "mongo-client", "type": "#class:org.apache.camel.component.mongodb.SslAwareMongoClient", "properties": { "password": "{{?password}}", "username": "{{?username}}", "hosts": "{{hosts}}", "ssl": "{{ssl}}", "sslValidationEnabled": "{{sslValidationEnabled}}" } } ], "from": { "uri": "kamelet:source", "steps": [ { "choice": { "when": [ { "simple": "${header[db-upsert]}", "steps": [ { "setHeader": { "name": "CamelMongoDbUpsert", "simple": "${header[db-upsert]}" } } ] }, { "simple": "${header[ce-dbupsert]}", "steps": [ { "setHeader": { "name": "CamelMongoDbUpsert", "simple": "${header[ce-dbupsert]}" } } ] } ] } }, { "to": { "uri": "{{local-mongodb}}:test", "parameters": { "createCollection": "{{?createCollection}}", "writeConcern": "{{?writeConcern}}", "collection": "{{collection}}", "database": "{{database}}", "operation": "insert", "mongoConnection": "#{{mongo-client}}" } } } ] } } }, "propertiesSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "MongoDB Sink", "description": "Send data to MongoDB.", "required": [ "hosts", "collection", "database" ], "properties": { "hosts": { "type": "string", "title": "MongoDB Hosts", "description": "A comma-separated list of MongoDB host addresses in `host:port` format." }, "collection": { "type": "string", "title": "MongoDB Collection", "description": "The name of the MongoDB collection to bind to this endpoint." }, "password": { "type": "string", "title": "MongoDB Password", "description": "A user password for accessing MongoDB.", "format": "password" }, "username": { "type": "string", "title": "MongoDB Username", "description": "A username for accessing MongoDB." }, "ssl": { "type": "boolean", "title": "Enable Ssl for Mongodb Connection", "description": "whether to enable ssl connection to mongodb.", "default": true }, "sslValidationEnabled": { "type": "boolean", "title": "Enables Ssl Certificates Validation and Host name checks.", "description": "IMPORTANT this should be disabled only in test environment since can pose security issues.", "default": true }, "database": { "type": "string", "title": "MongoDB Database", "description": "The name of the MongoDB database." }, "writeConcern": { "type": "string", "title": "Write Concern", "description": "The level of acknowledgment requested from MongoDB for write operations.", "enum": [ "ACKNOWLEDGED", "W1", "W2", "W3", "UNACKNOWLEDGED", "JOURNALED", "MAJORITY" ] }, "createCollection": { "type": "boolean", "title": "Collection", "description": "Create a collection during initialization if it doesn't exist.", "default": false } } } }