New to Kestra?
Use blueprints to kickstart your first workflows.
Manage Temporal schedules as code with Kestra. Create or update a cron schedule for a workflow type declaratively and confirm the change in Slack.
Temporal schedules created through the CLI have a habit of becoming unreviewable tribal knowledge: nobody remembers who set the cron, and the only record is a terminal history. This blueprint moves the schedule definition into YAML that lives in Git: io.kestra.plugin.temporal.workflow.Schedule creates or, with overwrite: true, updates a schedule that starts a workflow type on a task queue at a cron cadence, and Slack announces every applied change with the schedule ID.
schedule_id, cron_expression, workflow_type, task_queue, and the Temporal namespace. Changing the cadence is a one-line diff.upsert_schedule (io.kestra.plugin.temporal.workflow.Schedule) connects to the frontend from TEMPORAL_ENDPOINT and applies the definition. With overwrite: true, rerunning the flow updates the existing schedule in place instead of failing, so the flow is idempotent and the YAML is the source of truth. The task returns the documented scheduleId output.notify posts the applied scheduleId, cron, and workflow type to Slack, turning every schedule change into an announced event.errors block posts a distinct alert when the upsert fails, noting that the previous definition is still in effect.The schedule itself runs inside Temporal; what Kestra adds is everything around the change: typed inputs with defaults, secrets for the endpoint, an execution history showing who applied which definition and when, and a notification trail. Since cron and intervalSeconds are mutually exclusive on the task, the YAML also makes the chosen cadence style explicit and reviewable.
apiKey property; for mTLS clusters, provide caCert, clientCert, and clientKey.TEMPORAL_ENDPOINT: Temporal frontend address in host:port format, for example temporal.example.com:7233.SLACK_WEBHOOK_URL: Slack incoming webhook URL.args property, one JSON-encoded string per parameter.cron with intervalSeconds.ForEach over a list of schedule definitions.