New to Kestra?
Use blueprints to kickstart your first workflows.
List Pylon issues, alert Slack when an open issue has passed its own resolution SLA deadline, and log the result for support ops.
Pylon tracks a resolution SLA deadline on every issue, but nothing in Pylon itself pages
anyone the moment that deadline passes while the issue is still open. This blueprint reads
that deadline directly, resolution_breach_time, rather than guessing from how old an issue
looks, and alerts the moment it has passed on an issue that is not closed.
This blueprint was created by Mohit Jeswani.
list_issues (io.kestra.plugin.pylon.issue.List) fetches every issue updated within
lookback_days. Read-only; nothing in Pylon is changed. allowFailure: true covers an
API or auth error without failing the flow outright.evaluate (io.kestra.plugin.core.output.OutputValues) filters to issues where state
is not closed and resolution_breach_time is on or before today, counting them and
collecting their titles with a jq filter.route (io.kestra.plugin.core.flow.If):summary logs the count and severity, closing the governance cycle.errors alerts Slack if the flow itself fails, for example an expired API token.issue.List used against a
real SLA field rather than a generic status filter.Pylon computes and stores the SLA deadline; it does not decide a cadence, compare it to the
issue's current state, or notify a specific Slack channel the moment it passes. Kestra keeps
lookback_days and max_breached_count as flow inputs, turns the check into a Slack page
naming the actual breached issues, and keeps a full execution history of every run.
resolution_breach_time is
actually populated on at least some issues.This flow calls the Pylon API directly over HTTPS; there is no official local Pylon emulator,
so list_issues cannot be exercised against a local Docker container. Validate against a
real account with at least one issue past its SLA deadline.
PYLON_API_TOKEN: the Pylon API token used by list_issues. In Kestra OSS, provide it as
the base64-encoded environment variable SECRET_PYLON_API_TOKEN.SLACK_WEBHOOK_URL: used by alert and the errors block. In Kestra OSS, provide it as
the base64-encoded environment variable SECRET_SLACK_WEBHOOK_URL.| Input | Default | Purpose |
|---|---|---|
lookback_days |
90 |
Bounded time range issue.List scans, max 365 |
max_breached_count |
1 |
Breached-issue count that triggers the Slack alert |
{{ outputs.list_issues.rows }}: every issue in the window (title, state,
resolution_breach_time, first_response_breach_time, created_at, and more).{{ outputs.evaluate.values.breached_count }} / .breached_titles: how many issues have
breached and their titles, semicolon-joined.{{ outputs.evaluate.values.severity }}: OK, SLA_BREACH, or CRITICAL.lookback_days bounds what issue.List even considers; an issue last updated before that
window is invisible to this check even if it is still open and long past its SLA. Pylon
caps the range itself at 365 days.resolution_breach_time compares by date only (its first 10 characters), not by hour or
minute; an issue that breaches later today is not yet flagged until tomorrow's date rolls
over in this comparison.resolution_breach_time is only populated when an SLA policy actually applies to the
issue; issues with no SLA policy are correctly excluded, not false positives, but also
never checked.first_response_breach_time is a separate SLA deadline this blueprint does not check; a
first-response breach on an issue that later meets its resolution SLA will not be flagged.PYLON_API_TOKEN and SLACK_WEBHOOK_URL secrets.summary logs a count.alert fires with its title.hourly trigger once lookback_days and max_breached_count reflect your own
support SLA policy.first_response_breach_time the same way, for a
complete first-response and resolution SLA gate in one flow.team_slas in a downstream task to route each team's breaches to its own Slack
channel instead of one shared alert.business_hours_resolution_seconds to report how far past SLA an issue is, not just
that it has breached.