FreshnessTrigger FreshnessTrigger
FreshnessTrigger Certified

yaml
type: io.kestra.plugin.kestra.ee.assets.FreshnessTrigger
yaml
id: stale_data_alert
namespace: company.monitoring

triggers:
  - id: check_trips_freshness
    type: io.kestra.plugin.kestra.ee.assets.FreshnessTrigger
    assetId: trips
    namespace: company.team
    maxStaleness: PT26H  # Allow 2 extra hours buffer
    checkInterval: PT1H

tasks:
  - id: send_alert
    type: io.kestra.plugin.notifications.slack.SlackIncoming
    url: "{{ secret('SLACK_WEBHOOK') }}"
    payload: |
      {
        "text": "⚠️ Asset `{{ trigger.assets[0].id }}` is stale. Last updated: {{ trigger.assets[0].lastUpdated }}"
      }

yaml
id: sla_enforcement
namespace: company.data

triggers:
  - id: mart_freshness_check
    type: io.kestra.plugin.kestra.ee.assets.FreshnessTrigger
    assetType: io.kestra.plugin.ee.assets.Table
    namespace: company.data
    metadataQuery:
      - field: model_layer
        type: EQUAL_TO
        value: mart
    maxStaleness: PT4H
    checkInterval: PT30M

tasks:
  - id: trigger_refresh
    type: io.kestra.plugin.core.flow.Subflow
    namespace: company.data
    flowId: refresh_mart_tables
    inputs:
      table_id: "{{ trigger.assets[0].id }}"

yaml
id: multi_region_freshness
namespace: company.monitoring

triggers:
 - id: regional_freshness_check
   type: io.kestra.plugin.kestra.ee.assets.FreshnessTrigger
   assetType: io.kestra.plugin.ee.assets.Table
   maxStaleness: PT12H
   checkInterval: PT1H
   metadataQuery:
     - field: environment
       type: EQUAL_TO
       value: prod
     - field: config.region
       type: IS_ONE_OF
       value: [us-east-1, us-west-2, eu-west-1]
     - field: status
       type: IS_NOT_ONE_OF
       value: [archived, test]
     - field: description
       type: CONTAINS
       value: critical

tasks:
 - id: alert_stale_regional_assets
   type: io.kestra.plugin.notifications.slack.SlackIncoming
   url: "{{ secret('OPS_WEBHOOK') }}"
   payload: |
     {
       "text": "⚠️ Regional asset `{{ trigger.assets[0].id }}` in {{ trigger.assets[0].metadata['config.region'] }} is stale"
     }
Properties
Defaultfalse
Definitions
apiTokenstring
autobooleanstring
Defaulttrue
passwordstring
usernamestring
Definitions
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.DateTimeBetweenio.kestra.core.models.conditions.types.DateTimeBetweenConditionio.kestra.plugin.core.condition.DateTimeBetweenCondition
afterstring
beforestring
datestring
Default{{ trigger.date }}
dayOfWeek*Requiredstring
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.DayWeekio.kestra.core.models.conditions.types.DayWeekConditionio.kestra.plugin.core.condition.DayWeekCondition
datestring
Default{{ trigger.date }}
dayInMonth*Requiredstring
Possible Values
FIRSTLASTSECONDTHIRDFOURTH
dayOfWeek*Requiredstring
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.DayWeekInMonthio.kestra.plugin.core.condition.DayWeekInMonthConditionio.kestra.core.models.conditions.types.DayWeekInMonthCondition
datestring
Default{{ trigger.date }}
flowId*Requiredstring
namespace*Requiredstring
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.ExecutionFlowio.kestra.plugin.core.condition.ExecutionFlowConditionio.kestra.core.models.conditions.types.ExecutionFlowCondition
labels*Requiredarrayobject
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.ExecutionLabelsio.kestra.core.models.conditions.types.ExecutionLabelsConditionio.kestra.plugin.core.condition.ExecutionLabelsCondition
namespace*Requiredstring
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.ExecutionNamespaceio.kestra.core.models.conditions.types.ExecutionNamespaceConditionio.kestra.plugin.core.condition.ExecutionNamespaceCondition
comparisonstring
Possible Values
EQUALSPREFIXSUFFIX
prefixbooleanstring
Defaultfalse
expression*Requiredbooleanstring
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.ExecutionOutputsio.kestra.core.models.conditions.types.ExecutionOutputsConditionio.kestra.plugin.core.condition.ExecutionOutputsCondition
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.ExecutionStatusio.kestra.core.models.conditions.types.ExecutionStatusConditionio.kestra.plugin.core.condition.ExecutionStatusCondition
inarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
notInarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
expression*Requiredstring
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.Expressionio.kestra.plugin.core.condition.ExpressionConditionio.kestra.core.models.conditions.types.VariableCondition
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.HasRetryAttemptio.kestra.plugin.core.condition.HasRetryAttemptConditionio.kestra.core.models.conditions.types.HasRetryAttemptCondition
inarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
notInarray
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
conditions*Required
Min items1
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.Notio.kestra.core.models.conditions.types.NotConditionio.kestra.plugin.core.condition.NotCondition
conditions*Required
Min items1
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.Orio.kestra.core.models.conditions.types.OrConditionio.kestra.plugin.core.condition.OrCondition
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.PublicHolidayio.kestra.plugin.core.condition.PublicHolidayConditionio.kestra.core.models.conditions.types.PublicHolidayCondition
countrystring
datestring
Default{{ trigger.date}}
subDivisionstring
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.TimeBetweenio.kestra.plugin.core.condition.TimeBetweenConditionio.kestra.core.models.conditions.types.TimeBetweenCondition
afterstring
beforestring
datestring
Default{{ trigger.date }}
type*Requiredobject
Possible Values
io.kestra.plugin.core.condition.Weekendio.kestra.plugin.core.condition.WeekendConditionio.kestra.core.models.conditions.types.WeekendCondition
datestring
Default{{ trigger.date }}
DefaultPT1H
Formatduration
Definitions
fieldstring
typestring
Possible Values
EQUAL_TONOT_EQUAL_TO
valuestring
SubTypestring
Possible Values
CREATEDSUBMITTEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINTRESUBMITTED
Definitions
checkTimestring
Formatdate-time
descriptionstring
displayNamestring
idstring
Validation RegExp^[a-zA-Z0-9][a-zA-Z0-9._-]*
Min length1
Max length150
metadataobject
namespacestring
Validation RegExp^[a-z0-9][a-z0-9._-]*
Min length1
Max length150
staleDurationstring
Formatduration
typestring
Min length1