EventCreatedTriggerEventCreatedTrigger
EventCreatedTriggerCertified

yaml
type: "io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger"
yaml
id: google_calendar_event_trigger
namespace: company.team

tasks:
  - id: process_events
    type: io.kestra.plugin.core.log.Log
    message: "Found {{ trigger.events | length }} new event(s)"
  - id: log_each_event
    type: io.kestra.plugin.core.flow.ForEach
    values: "{{ trigger.events }}"
    tasks:
      - id: log_event
        type: io.kestra.plugin.core.log.Log
        message: "Event: {{ taskrun.value.summary }} ({{ taskrun.value.id }})"

triggers:
  - id: watch_calendar
    type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
    calendarIds:
      - "team@company.com"
    interval: PT5M

yaml
id: google_calendar_meeting_trigger
namespace: company.team

tasks:
  - id: notify_meetings
    type: io.kestra.plugin.core.flow.ForEach
    values: "{{ trigger.events }}"
    tasks:
      - id: send_notification
        type: io.kestra.plugin.notifications.slack.SlackIncomingWebhook
        url: "{{ secret('SLACK_WEBHOOK') }}"
        payload: |
          {
            "text": "New meeting scheduled: {{ taskrun.value.summary }} on {{ taskrun.value.start.dateTime }}"
          }

triggers:
  - id: watch_meetings
    type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
    calendarIds:
      - "team-calendar@company.com"
    searchQuery: "meeting"
    interval: PT10M

yaml
id: google_calendar_multiple_trigger
namespace: company.team

tasks:
  - id: log_events
    type: io.kestra.plugin.core.flow.ForEach
    values: "{{ trigger.events }}"
    tasks:
      - id: log_event
        type: io.kestra.plugin.core.log.Log
        message: "Event by {{ taskrun.value.organizer.email }}: {{ taskrun.value.summary }}"

triggers:
  - id: watch_multiple_calendars
    type: io.kestra.plugin.googleworkspace.calendar.EventCreatedTrigger
    serviceAccount: "{{ secret('GCP_SERVICE_ACCOUNT_JSON') }}"
    calendarIds:
      - "team-calendar@company.com"
      - "project-calendar@company.com"
    organizerEmail: "manager@company.com"
    interval: PT15M
Properties
SubTypestring
Defaultfalse
Definitions
type*Requiredobject
afterstring
Formatdate-time
beforestring
Formatdate-time
datestring
Default{{ trigger.date }}
dayOfWeek*Requiredstring
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
type*Requiredobject
datestring
Default{{ trigger.date }}
dayInMonth*Requiredstring
Possible Values
FIRSTLASTSECONDTHIRDFOURTH
dayOfWeek*Requiredstring
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
type*Requiredobject
datestring
Default{{ trigger.date }}
flowId*Requiredstring
namespace*Requiredstring
type*Requiredobject
labels*Requiredarrayobject
type*Requiredobject
namespace*Requiredstring
type*Requiredobject
comparisonstring
Possible Values
EQUALSPREFIXSUFFIX
prefixbooleanstring
Defaultfalse
expression*Requiredbooleanstring
type*Requiredobject
type*Requiredobject
inarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
notInarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
expression*Requiredstring
type*Requiredobject
flowId*Requiredstring
namespace*Requiredstring
type*Requiredobject
namespace*Requiredstring
type*Requiredobject
prefixboolean
Defaultfalse
type*Requiredobject
inarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
notInarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
conditions*Requiredobject
id*Requiredstring
Validation RegExp^[a-zA-Z0-9][a-zA-Z0-9_-]*
Min length1
type*Requiredobject
resetOnSuccessboolean
Defaulttrue
timeWindow
Default{ "type": "DURATION_WINDOW" }
deadlinestring
Formatpartial-time
endTimestring
Formatpartial-time
startTimestring
Formatpartial-time
typestring
DefaultDURATION_WINDOW
Possible Values
DAILY_TIME_DEADLINEDAILY_TIME_WINDOWDURATION_WINDOWSLIDING_WINDOW
windowstring
Formatduration
windowAdvancestring
Formatduration
windowDeprecatedstring
Formatduration
windowAdvanceDeprecatedstring
Formatduration
conditions*Required
Min items1
type*Requiredobject
conditions*Required
Min items1
type*Requiredobject
type*Requiredobject
countrystring
datestring
Default{{ trigger.date}}
subDivisionstring
type*Requiredobject
afterstring
Formattime
beforestring
Formattime
datestring
Default{{ trigger.date }}
type*Requiredobject
datestring
Default{{ trigger.date }}
Possible Values
CONFIRMEDTENTATIVECANCELLED
DefaultPT5M
Formatduration
Default100
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
Definitions
createdstring
Formatdate-time
descriptionstring
end
datestring
dateTimestring
Formatdate-time
timeZonestring
eventTypestring
htmlLinkstring
idstring
locationstring
organizer
displayNamestring
emailstring
selfboolean
start
datestring
dateTimestring
Formatdate-time
timeZonestring
statusstring
summarystring
updatedstring
Formatdate-time
visibilitystring