{ "apiVersion": "camel.apache.org/v1", "kind": "Kamelet", "metadata": { "name": "snowflake-sink", "annotations": { "camel.apache.org/kamelet.support.level": "Preview", "camel.apache.org/catalog.version": "4.22.1", "camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjIiIGJhc2VQcm9maWxlPSJ0aW55LXBzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTY1IDE1NTkiIHdpZHRoPSIxNTY1IiBoZWlnaHQ9IjE1NTkiPgoJPHRpdGxlPmxvZ28tYmx1ZS1zdmcgY29weS1zdmc8L3RpdGxlPgoJPGRlZnM+CgkJPGNsaXBQYXRoIGNsaXBQYXRoVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iY3AxIj4KCQkJPHBhdGggZD0iTTAuMjQgMEw2ODkzLjI2IDBMNjg5My4yNiAxNTU4LjIyTDAuMjQgMTU1OC4yMkwwLjI0IDBaIiAvPgoJCTwvY2xpcFBhdGg+Cgk8L2RlZnM+Cgk8c3R5bGU+CgkJdHNwYW4geyB3aGl0ZS1zcGFjZTpwcmUgfQoJCS5zaHAwIHsgZmlsbDogIzI5YjVlOCB9IAoJPC9zdHlsZT4KCTxnIGlkPSJIT01FUEFHRSI+CgkJPGcgaWQ9IlNub3dmbGFrZS1Ib21lcGFnZS1wbGF0Zm9ybS1hbHQtMy1Db3B5Ij4KCQkJPGcgaWQ9IkNvbXBvbmVudHMtLy1OYXZpZ2F0aW9uLS8tTWFpbiI+CgkJCQk8ZyBpZD0iTG9nby0vLVNub3dmbGFrZS1CbHVlIj4KCQkJCQk8ZyBpZD0iTGF5ZXIiPgoJCQkJCQk8ZyBpZD0iTWFzayI+CgkJCQkJCTwvZz4KCQkJCQkJPGcgaWQ9IkNsaXAtUGF0aDogQ2xpcC1QYXRoOiBGaWxsLTEiIGNsaXAtcGF0aD0idXJsKCNjcDEpIj4KCQkJCQkJCTxnIGlkPSJDbGlwLVBhdGg6IEZpbGwtMSI+CgkJCQkJCQkJPHBhdGggaWQ9IkZpbGwtMSIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGFzcz0ic2hwMCIgZD0iTTUyMi42MyA4MDcuNTdDNTE1LjYzIDgzMC4wNyA1MDAuNDQgODUwLjA2IDQ3OC4wNyA4NjIuODRMMTQ2LjcyIDEwNTIuNjlDOTkuOTIgMTA3OS4zOSA0MC4zIDEwNjMuNTYgMTMuNDQgMTAxNy4zOEMtMTMuNTkgOTcwLjk0IDIuMzIgOTExLjg2IDQ5LjA4IDg4NS4wOEwyMzQuMjYgNzc5LjE3TDQ5LjA4IDY3Mi45OEMyLjMyIDY0Ni4yNCAtMTMuNjcgNTg3LjE1IDEzLjQ0IDU0MC44OEM0MC4zIDQ5NC41OCA5OS45MiA0NzguNyAxNDYuNzIgNTA1LjRMNDc4LjA3IDY5NS4xM0M1MDEuMzcgNzA4LjQ2IDUxNi45NCA3MjkuNiA1MjMuNDggNzUzLjI0QzUyNS42OCA3NjAuODQgNTI2LjY2IDc2OC40NCA1MjcuMDQgNzc2LjA4QzUyNy4zIDc4Ni42IDUyNS45NCA3OTcuMjYgNTIyLjYzIDgwNy41N1pNNjEyLjU0IDk4NS4zOEM2NjMgOTg4Ljk4IDcwMi44NCAxMDMwLjg0IDcwMi44NCAxMDgxLjc3TDcwMi44NCAxNDYxLjM2QzcwMi44NCAxNTE0Ljg5IDY1OS4wNSAxNTU4LjIyIDYwNS4yOSAxNTU4LjIyQzU1MS4yNyAxNTU4LjIyIDUwNy42NSAxNTE0Ljg5IDUwNy42NSAxNDYxLjM2TDUwNy42NSAxMjQ5LjA1TDMyMS44NCAxMzU1LjI5QzI3NS4yNSAxMzgyLjIgMjE1LjY3IDEzNjYuMjggMTg4LjYgMTMyMC4wNkMxNjEuNyAxMjczLjc1IDE3Ny42MSAxMjE0LjM3IDIyNC4yOSAxMTg3LjYzTDU1NS45IDk5OC4wMkM1NzMuNzIgOTg3LjcxIDU5My40OSA5ODMuNzYgNjEyLjU0IDk4NS4zOFpNOTUyLjE3IDU3Mi44NUM5MDEuNTkgNTY5LjE1IDg2MS44MyA1MjcuMjIgODYxLjgzIDQ3Ni4zM0w4NjEuODMgOTYuNjlDODYxLjgzIDQzLjM0IDkwNS4zNyAwIDk1OS40MyAwQzEwMTMuNDQgMCAxMDU3LjA3IDQzLjM0IDEwNTcuMDcgOTYuNjlMMTA1Ny4wNyAzMDkuMTNMMTI0Mi43NSAyMDIuNzJDMTI4OS40MyAxNzUuOTggMTM0OS4wNCAxOTEuODUgMTM3NS45NSAyMzguMDhDMTQwMi44IDI4NC41NiAxMzg2Ljk4IDM0My42OCAxMzQwLjI2IDM3MC40MkwxMDA4LjY5IDU2MC4yQzk5MC44NyA1NzAuMzggOTcxLjE0IDU3NC4zNyA5NTIuMTcgNTcyLjg1Wk0yMjQuMjkgMzcwLjQyQzE3Ny42MSAzNDMuNjggMTYxLjcgMjg0LjU2IDE4OC42IDIzOC4wOEMyMTUuNjcgMTkxLjg1IDI3NS4yNSAxNzUuOTggMzIxLjg0IDIwMi43Mkw1MDcuNjUgMzA5LjEzTDUwNy42NSA5Ni42OUM1MDcuNjUgNDMuMzQgNTUxLjI3IDAgNjA1LjI5IDBDNjU5LjA1IDAgNzAyLjg0IDQzLjM0IDcwMi44NCA5Ni42OUw3MDIuODQgNDc2LjMzQzcwMi44NCA1MjcuMjIgNjYzIDU2OS4xNSA2MTIuNTQgNTcyLjg1QzU5My40OSA1NzQuMzcgNTczLjcyIDU3MC4zOCA1NTUuOSA1NjAuMkwyMjQuMjkgMzcwLjQyWk04MTkuODMgOTUyLjc0QzgxNS44OCA5NTYuNzcgODA4LjI4IDk2MC4wNCA4MDIuNTEgOTYwLjA0TDc2MS45OSA5NjAuMDRDNzU2LjQzIDk2MC4wNCA3NDguNzEgOTU2Ljc3IDc0NC42OCA5NTIuNzRMNjA2Ljk0IDgxNi4yN0M2MDMgODEyLjQxIDU5OS44MSA4MDQuNjggNTk5LjgxIDc5OS4yNUw1OTkuODEgNzU4Ljk3QzU5OS44MSA3NTMuNDEgNjAzIDc0NS42OSA2MDYuOTQgNzQxLjc4TDc0NC42OCA2MDUuMjdDNzQ4LjcxIDYwMS4yOSA3NTYuNDMgNTk4LjEgNzYxLjk5IDU5OC4xTDgwMi41MSA1OTguMUM4MDguMTYgNTk4LjEgODE1Ljg4IDYwMS4yOSA4MTkuODMgNjA1LjI3TDk1Ny42NSA3NDEuNzhDOTYxLjU5IDc0NS42OSA5NjQuNzcgNzUzLjQxIDk2NC43NyA3NTguOTdMOTY0Ljc3IDc5OS4yNUM5NjQuNzcgODA0LjY4IDk2MS41OSA4MTIuNDEgOTU3LjY1IDgxNi4yN0w4MTkuODMgOTUyLjc0Wk04NDcuNDkgNzc4LjM3Qzg0Ny40OSA3NzIuODUgODQ0LjE0IDc2NS4xNyA4NDAuMTkgNzYxLjA5TDgwMC4yNiA3MjEuN0M3OTYuMzYgNzE3LjggNzg4LjYgNzE0LjU3IDc4My4wNCA3MTQuNTdMNzgxLjQ3IDcxNC41N0M3NzUuOTEgNzE0LjU3IDc2OC4xOSA3MTcuOCA3NjQuMzIgNzIxLjdMNzI0LjQgNzYxLjA5QzcyMC40MSA3NjUuMTcgNzE3LjM1IDc3Mi44NSA3MTcuMzUgNzc4LjM3TDcxNy4zNSA3NzkuOTRDNzE3LjM1IDc4NS4zNyA3MjAuNDEgNzkyLjk3IDcyNC40IDc5Ni45Nkw3NjQuMzIgODM2LjQzQzc2OC4yMyA4NDAuMzQgNzc1LjkxIDg0My41NiA3ODEuNDcgODQzLjU2TDc4My4wNCA4NDMuNTZDNzg4LjYgODQzLjU2IDc5Ni4zNiA4NDAuMzQgODAwLjI2IDgzNi40M0w4NDAuMTkgNzk2Ljk2Qzg0NC4xNCA3OTIuOTcgODQ3LjQ5IDc4NS4zNyA4NDcuNDkgNzc5Ljk0TDg0Ny40OSA3NzguMzdaTTEzNDAuMjYgMTE4Ny42M0MxMzg2Ljk4IDEyMTQuMzcgMTQwMi44IDEyNzMuNzUgMTM3NS45NSAxMzIwLjA2QzEzNDkuMDQgMTM2Ni4yOCAxMjg5LjM4IDEzODIuMiAxMjQyLjc1IDEzNTUuMjlMMTA1Ny4wNyAxMjQ5LjA1TDEwNTcuMDcgMTQ2MS4zNkMxMDU3LjA3IDE1MTQuODkgMTAxMy40NCAxNTU4LjIyIDk1OS40MyAxNTU4LjIyQzkwNS4zNyAxNTU4LjIyIDg2MS44MyAxNTE0Ljg5IDg2MS44MyAxNDYxLjM2TDg2MS44MyAxMDgxLjc3Qzg2MS44MyAxMDMwLjg0IDkwMS41OSA5ODguOTggOTUyLjE3IDk4NS4zOEM5NzEuMTQgOTgzLjc2IDk5MC44NyA5ODcuNzEgMTAwOC42OSA5OTguMDJMMTM0MC4yNiAxMTg3LjYzWk0xMzMwLjM3IDc3OS4xN0wxNTE1LjU1IDg4NS4wOEMxNTYyLjMxIDkxMS44NiAxNTc4LjMxIDk3MC45NCAxNTUxLjI4IDEwMTcuMzhDMTUyNC4yOSAxMDYzLjU2IDE0NjQuNTkgMTA3OS4zOSAxNDE4IDEwNTIuNjlMMTA4Ni4zOSA4NjIuODRDMTA2NC4yNCA4NTAuMDYgMTA0OC45MiA4MzAuMDcgMTA0Mi4wOSA4MDcuNTdDMTAzOC44NiA3OTcuMjYgMTAzNy4zMyA3ODYuNiAxMDM3LjcyIDc3Ni4wOEMxMDM3Ljg5IDc2OC40NCAxMDM5LjAzIDc2MC44NCAxMDQxLjE1IDc1My4yNEMxMDQ3Ljc3IDcyOS42IDEwNjMuMzUgNzA4LjQ2IDEwODYuMzkgNjk1LjEzTDE0MTggNTA1LjRDMTQ2NC41OSA0NzguNyAxNTI0LjI5IDQ5NC41OCAxNTUxLjI4IDU0MC44OEMxNTc4LjMxIDU4Ny4xNSAxNTYyLjMxIDY0Ni4yNCAxNTE1LjU1IDY3Mi45OEwxMzMwLjM3IDc3OS4xN1oiIC8+CgkJCQkJCQk8L2c+CgkJCQkJCTwvZz4KCQkJCQk8L2c+CgkJCQk8L2c+CgkJCTwvZz4KCQk8L2c+Cgk8L2c+Cjwvc3ZnPg==", "camel.apache.org/provider": "Apache Software Foundation", "camel.apache.org/kamelet.group": "SQL", "camel.apache.org/kamelet.namespace": "Database" }, "labels": { "camel.apache.org/kamelet.type": "sink" } }, "spec": { "definition": { "title": "Snowflake Sink", "description": "Send data to a Snowflake Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.", "required": [ "instanceUrl", "username", "password", "query" ], "type": "object", "properties": { "instanceUrl": { "title": "Instance URL", "description": "The Instance url", "type": "string", "example": "instance.snowflakecomputing.com" }, "username": { "title": "Username", "description": "The username to access a secured Snowflake Database.", "type": "string", "x-descriptors": [ "urn:camel:group:credentials" ] }, "password": { "title": "Password", "description": "The password to access a secured Snowflake Database.", "type": "string", "format": "password", "x-descriptors": [ "urn:camel:group:credentials" ] }, "query": { "title": "Query", "description": "The query to execute against the Snowflake Database.", "type": "string", "example": "INSERT INTO accounts (username,city) VALUES (:#username,:#city)" }, "databaseName": { "title": "Database Name", "description": "The name of the Snowflake Database.", "type": "string" } } }, "types": { "in": { "mediaType": "application/json" } }, "dependencies": [ "camel:jackson", "camel:kamelet", "camel:sql", "mvn:net.snowflake:snowflake-jdbc:3.24.2", "mvn:org.apache.commons:commons-dbcp2:2.14.0" ], "template": { "beans": [ { "name": "local-sql-snowflake-sink", "type": "#class:org.apache.camel.component.sql.SqlComponent", "properties": { "autowiredEnabled": "false" } }, { "name": "dsBean", "type": "#class:net.snowflake.client.jdbc.SnowflakeBasicDataSource", "properties": { "user": "{{username}}", "password": "{{password}}", "url": "jdbc:snowflake://{{instanceUrl}}", "databaseName": "{{?databaseName}}" } } ], "from": { "uri": "kamelet:source", "steps": [ { "unmarshal": { "json": { "library": "Jackson" } } }, { "to": { "uri": "{{local-sql-snowflake-sink}}:{{query}}", "parameters": { "dataSource": "#bean:{{dsBean}}" } } } ] } } }, "propertiesSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "title": "Snowflake Sink", "description": "Send data to a Snowflake Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.", "required": [ "instanceUrl", "username", "password", "query" ], "properties": { "instanceUrl": { "type": "string", "title": "Instance URL", "description": "The Instance url" }, "username": { "type": "string", "title": "Username", "description": "The username to access a secured Snowflake Database." }, "password": { "type": "string", "title": "Password", "description": "The password to access a secured Snowflake Database.", "format": "password" }, "query": { "type": "string", "title": "Query", "description": "The query to execute against the Snowflake Database." }, "databaseName": { "type": "string", "title": "Database Name", "description": "The name of the Snowflake Database." } } } }