
Pylon Trigger
CertifiedTrigger a flow on new or updated Pylon issues
Pylon Trigger
Trigger a flow on new or updated Pylon issues
Polls GET /issues at the configured interval and fires one execution per poll carrying the issues whose updated_at is newer than the last delivered watermark, oldest first and up to maxIssuesPerExecution per execution, so no issue is re-delivered. The watermark is persisted in the flow's namespace KV store, keyed by flow and trigger ID. On first activation, only the current baseline is recorded (seeded to now - lookbackPeriod) — no execution fires — to avoid replaying the entire backlog. Equal updated_at timestamps are compared strictly (>), and issues sharing the newest updated_at are tracked individually so a same-instant tie is neither skipped nor re-fired.
Assumption: Pylon's GET /issues time-range filter is not documented as filtering on a specific timestamp field; this trigger assumes it is (or includes) updated_at, since that is the only interpretation useful for detecting updates, not just creations.
type: io.kestra.plugin.pylon.issue.TriggerExamples
React to new or updated Pylon issues with a polling trigger
id: on_new_pylon_issue
namespace: company.team
triggers:
- id: new_issue
type: io.kestra.plugin.pylon.issue.Trigger
apiToken: "{{ secret('PYLON_API_TOKEN') }}"
interval: PT1M
tasks:
- id: log_new_issues
type: io.kestra.plugin.core.log.Log
message: "Found {{ trigger.count }} new/updated Pylon issue(s)"
Properties
apiToken *Requiredstring
Pylon API token
API token created by a Pylon Admin user (Pylon Settings > API), sent as Authorization: Bearer <token> on every request. Store it as a Kestra secret and reference it with {{ secret('PYLON_API_TOKEN') }} — never hardcode it in a flow.
allowConcurrent Non-dynamicboolean
falseSpecifies whether a trigger is allowed to start a new execution even if a previous run is still in progress.
baseUrl string
https://api.usepylon.comPylon API base URL
Base URL of the Pylon API. Defaults to the US region (https://api.usepylon.com); override with https://api.eu.usepylon.com for the EU region.
interval Non-dynamicstring
PT1MdurationPolling interval
How often to poll the Pylon API for new or updated issues. Defaults to PT1M (every minute).
limit integerstring
100Maximum issues fetched per poll
Caps the limit query parameter sent to Pylon for each page of /issues. Must be between 1 and 20000. Defaults to 100.
lookbackPeriod string
PT0SLookback period
How far before the trigger's first activation to look for issues, so enabling the trigger does not miss issues updated just before it was enabled. Defaults to PT0S (only issues updated from the moment the trigger is enabled).
maxIssuesPerExecution integerstring
1000Maximum issues delivered per execution
Caps how many issues a single fired execution carries, so a burst of updates (a long trigger downtime, a bulk edit in Pylon) cannot produce an oversized execution payload. The oldest issues are delivered first; the remainder stays behind the watermark and is delivered by the following poll(s). Defaults to 1000.
stopAfter Non-dynamicarray
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTEDList of execution states after which a trigger should be stopped (a.k.a. disabled).
when string
trueA condition that determines whether the trigger should run.
A Pebble expression evaluated at trigger time. The trigger fires only when the expression evaluates to a truthy value (true, a non-empty string, a non-zero number). Use this to gate trigger execution on dynamic runtime values such as execution labels, flow variables, or environment conditions.
Outputs
count integer
Count
Number of issues in issues.
issues array
Issues
Every Pylon issue newly created or updated since the last poll.