From 708ade11fef8868c5a50d02b32851883b58babeb Mon Sep 17 00:00:00 2001 From: gitea_admin Date: Mon, 12 Oct 2026 02:33:46 +0000 Subject: [PATCH] Add kamelet definition: google-calendar-source --- kamelet.json | 261 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 kamelet.json diff --git a/kamelet.json b/kamelet.json new file mode 100644 index 0000000..f56ddc7 --- /dev/null +++ b/kamelet.json @@ -0,0 +1,261 @@ +{ + "apiVersion": "camel.apache.org/v1", + "kind": "Kamelet", + "metadata": { + "name": "google-calendar-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,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4NiAzOCA3NiA3NiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTI0NCA1NmgtNDB2NDBoNDBWNTZ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTI0NCAxMTRsMTgtMThoLTE4djE4eiIvPjxwYXRoIGZpbGw9IiNGQkJDMDQiIGQ9Ik0yNjIgNTZoLTE4djQwaDE4VjU2eiIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Ik0yNDQgOTZoLTQwdjE4aDQwVjk2eiIvPjxwYXRoIGZpbGw9IiMxODgwMzgiIGQ9Ik0xODYgOTZ2MTJjMCAzLjMxNSAyLjY4NSA2IDYgNmgxMlY5NmgtMTh6Ii8+PHBhdGggZmlsbD0iIzE5NjdEMiIgZD0iTTI2MiA1NlY0NGMwLTMuMzE1LTIuNjg1LTYtNi02aC0xMnYxOGgxOHoiLz48cGF0aCBmaWxsPSIjNDI4NUY0IiBkPSJNMjQ0IDM4aC01MmMtMy4zMTUgMCAtNiAyLjY4NS02IDZ2NTJoMThWNTZoNDBWMzh6Ii8+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTIxMi4yMDUgODcuMDNjLTEuNDk1LTEuMDEtMi41My0yLjQ4NS0zLjA5NS00LjQzNWwzLjQ3LTEuNDNjLjMxNSAxLjIuODY1IDIuMTMgMS42NSAyLjc5Ljc4LjY2IDEuNzMuOTg1IDIuODQuOTg1IDEuMTM1IDAgMi4xMS0uMzQ1IDIuOTI1LTEuMDM1czEuMjI1LTEuNTcgMS4yMjUtMi42MzVjMC0xLjA5LS40My0xLjk4LTEuMjktMi42Ny0uODYtLjY5LTEuOTQtMS4wMzUtMy4yMy0xLjAzNWgtMi4wMDVWNzQuMTNoMS44YzEuMTEgMCAyLjA0NS0uMyAyLjgwNS0uOS43Ni0uNiAxLjE0LTEuNDIgMS4xNC0yLjQ2NSAwIC0uOTMtLjM0LTEuNjctMS4wMi0yLjIyNS0uNjgtLjU1NS0xLjU0LS44MzUtMi41ODUtLjgzNS0xLjAyIDAgLTEuODMuMjctMi40My44MTVhNC43ODQgNC43ODQgMCAwIDAgLTEuMzEgMi4wMDVsLTMuNDM1LTEuNDNjLjQ1NS0xLjI5IDEuMjktMi40MyAyLjUxNS0zLjQxNSAxLjIyNS0uOTg1IDIuNzktMS40OCA0LjY5LTEuNDggMS40MDUgMCAyLjY3LjI3IDMuNzkuODE1IDEuMTIuNTQ1IDIgMS4zIDIuNjM1IDIuMjYuNjM1Ljk2NS45NSAyLjA0NS45NSAzLjI0NSAwIDEuMjI1LS4yOTUgMi4yNi0uODg1IDMuMTEtLjU5Ljg1LTEuMzE1IDEuNS0yLjE3NSAxLjk1NXYuMjA1YTYuNjA1IDYuNjA1IDAgMCAxIDIuNzkgMi4xNzVjLjcyNS45NzUgMS4wOSAyLjE0IDEuMDkgMy41IDAgMS4zNi0uMzQ1IDIuNTc1LTEuMDM1IDMuNjRzLTEuNjQ1IDEuOTA1LTIuODU1IDIuNTE1Yy0xLjIxNS42MS0yLjU4LjkyLTQuMDk1LjkyLTEuNzU1LjAwNS0zLjM3NS0uNS00Ljg3LTEuNTF6TTIzMy41MiA2OS44MWwtMy44MSAyLjc1NS0xLjkwNS0yLjg5IDYuODM1LTQuOTNoMi42MlY4OGgtMy43NFY2OS44MXoiLz48L3N2Zz4=", + "camel.apache.org/provider": "Apache Software Foundation", + "camel.apache.org/kamelet.group": "Google Calendar", + "camel.apache.org/kamelet.namespace": "GCP" + }, + "labels": { + "camel.apache.org/kamelet.type": "source" + } + }, + "spec": { + "definition": { + "title": "Google Calendar Source", + "description": "Receive event data from Google Calendar.", + "required": [ + "index", + "calendarId", + "clientId", + "accessToken", + "refreshToken", + "clientSecret", + "applicationName" + ], + "type": "object", + "properties": { + "index": { + "title": "Index", + "description": "An index for the Google Calendar endpoint.", + "type": "string" + }, + "calendarId": { + "title": "Calendar ID", + "description": "The calendar ID to use as the source of event data.", + "type": "string" + }, + "clientId": { + "title": "Client Id", + "description": "The Client ID of the Google Calendar application.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "clientSecret": { + "title": "Client Secret", + "description": "The Client secret of the Google Calendar application.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "accessToken": { + "title": "Access Token", + "description": "The OAuth 2 access token for the Google Calendar application. This token typically expires after an hour. For long term usage, set the `refreshToken` property.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "refreshToken": { + "title": "Refresh Token", + "description": "The OAuth 2 refresh token for the Google Calendar application. The Google Calendar component can obtain a new `accessToken` whenever the current one expires. Set this value for long term usage.", + "type": "string", + "format": "password", + "x-descriptors": [ + "urn:camel:group:credentials" + ] + }, + "delay": { + "title": "Delay", + "description": "The number of milliseconds before the next poll.", + "type": "integer", + "default": 500 + }, + "applicationName": { + "title": "Application name", + "description": "The Google Calendar application name.", + "type": "string" + }, + "syncFlow": { + "title": "Sync Flow", + "description": "Specifies to sync events for incremental synchronization.", + "type": "boolean", + "default": false + }, + "consumeFromNow": { + "title": "Consume from now", + "description": "Specfies to consume events in the calendar from now on.", + "type": "boolean", + "default": true + } + } + }, + "dataTypes": { + "out": { + "default": "json", + "headers": { + "CamelGoogleCalendarEventId": { + "title": "Camel Google Calendar Event Id", + "description": "The calendar event id", + "type": "string" + } + }, + "types": { + "json": { + "format": "application-json", + "description": "Json representation of a Google Calendar event object.", + "mediaType": "application/json" + }, + "cloudevents": { + "format": "google-calendar-stream:application-cloudevents", + "description": "Output data type represents Google Calendar Stream response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Calendar Events and its derived object.", + "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.google.calendar.stream.consume", + "type": "string" + }, + "CamelCloudEventSource": { + "title": "CloudEvent Source", + "description": "The event source. By default, the Calendar Event Id with prefix \"google.calendar.stream.\".", + "type": "string" + }, + "CamelCloudEventSubject": { + "title": "CloudEvent Subject", + "description": "The event subject. The Calendar event type.", + "type": "string" + }, + "CamelCloudEventTime": { + "title": "CloudEvent Time", + "description": "The exchange creation timestamp as event time.", + "type": "string" + } + } + } + } + } + }, + "dependencies": [ + "camel:jackson", + "camel:google-calendar", + "camel:kamelet" + ], + "template": { + "from": { + "uri": "google-calendar-stream://{{index}}", + "parameters": { + "clientId": "{{clientId}}", + "calendarId": "{{calendarId}}", + "accessToken": "{{accessToken}}", + "refreshToken": "{{refreshToken}}", + "clientSecret": "{{clientSecret}}", + "delay": "{{delay}}", + "applicationName": "{{applicationName}}", + "syncFlow": "{{syncFlow}}", + "consumeFromNow": "{{consumeFromNow}}" + }, + "steps": [ + { + "marshal": { + "json": {} + } + }, + { + "to": "kamelet:sink" + } + ] + } + } + }, + "propertiesSchema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Google Calendar Source", + "description": "Receive event data from Google Calendar.", + "required": [ + "index", + "calendarId", + "clientId", + "accessToken", + "refreshToken", + "clientSecret", + "applicationName" + ], + "properties": { + "index": { + "type": "string", + "title": "Index", + "description": "An index for the Google Calendar endpoint." + }, + "calendarId": { + "type": "string", + "title": "Calendar ID", + "description": "The calendar ID to use as the source of event data." + }, + "clientId": { + "type": "string", + "title": "Client Id", + "description": "The Client ID of the Google Calendar application.", + "format": "password" + }, + "clientSecret": { + "type": "string", + "title": "Client Secret", + "description": "The Client secret of the Google Calendar application.", + "format": "password" + }, + "accessToken": { + "type": "string", + "title": "Access Token", + "description": "The OAuth 2 access token for the Google Calendar application. This token typically expires after an hour. For long term usage, set the `refreshToken` property.", + "format": "password" + }, + "refreshToken": { + "type": "string", + "title": "Refresh Token", + "description": "The OAuth 2 refresh token for the Google Calendar application. The Google Calendar component can obtain a new `accessToken` whenever the current one expires. Set this value for long term usage.", + "format": "password" + }, + "delay": { + "type": "integer", + "title": "Delay", + "description": "The number of milliseconds before the next poll.", + "default": 500 + }, + "applicationName": { + "type": "string", + "title": "Application name", + "description": "The Google Calendar application name." + }, + "syncFlow": { + "type": "boolean", + "title": "Sync Flow", + "description": "Specifies to sync events for incremental synchronization.", + "default": false + }, + "consumeFromNow": { + "type": "boolean", + "title": "Consume from now", + "description": "Specfies to consume events in the calendar from now on.", + "default": true + } + } + } +} \ No newline at end of file