yaml
type: "io.kestra.plugin.fs.ftp.trigger"
yaml
id: ftp_trigger_flow
namespace: company.team

tasks:
  - id: for_each_file
    type: io.kestra.plugin.core.flow.ForEach
    values: "{{ trigger.files }}"
    tasks:
      - id: return
        type: io.kestra.plugin.core.debug.Return
        format: "{{ taskrun.value | jq('.path') }}"

triggers:
  - id: watch
    type: io.kestra.plugin.fs.ftp.Trigger
    host: localhost
    port: 21
    username: foo
    password: "{{ secret('FTP_PASSWORD') }}"
    from: "/in/"
    interval: PT10S
    action: MOVE
    moveDirectory: "/archive/"

yaml
id: ftp_trigger_flow
namespace: company.team

tasks:
  - id: for_each_file
    type: io.kestra.plugin.core.flow.ForEach
    values: "{{ trigger.files }}"
    tasks:
      - id: return
        type: io.kestra.plugin.core.debug.Return
        format: "{{ taskrun.value | jq('.name') }}"
      - id: delete
        type: io.kestra.plugin.fs.ftp.Delete
        host: localhost
        port: 21
        username: foo
        password: bar
        uri: "/in/{{ taskrun.value | jq('.name') }}"

triggers:
  - id: watch
    type: io.kestra.plugin.fs.ftp.Trigger
    host: localhost
    port: 21
    username: foo
    password: bar
    from: "/in/"
    interval: PT10S
    action: NONE

yaml
id: ftp_wait_for_csv_in_mydir
namespace: company.team

tasks:
  - id: each
    type: io.kestra.plugin.core.flow.ForEach
    values: "{{ trigger.files }}"
    tasks:
      - id: return
        type: io.kestra.plugin.core.debug.Return
        format: "{{ taskrun.value | jq('.path') }}"

triggers:
  - id: watch
    type: io.kestra.plugin.fs.ftp.Trigger
    host: localhost
    port: "21"
    username: foo
    password: bar
    from: "mydir/"
    regExp: ".*.csv"
    action: MOVE
    moveDirectory: "archive/"
    interval: PTS
Properties
Possible Values
MOVEDELETENONE
Default false
Default PT1M
Format duration
Default { "connectionTimeout": "PT30S", "dataTimeout": "PT30S", "socketTimeout": "PT30S", "controlKeepAliveTimeout": "PT30S", "controlKeepAliveReplyTimeout": "PT30S" }
Default true
Default 21
Possible Values
DIRECTHTTPSOCKS
Default false
Default true
Default true
SubType string
Possible Values
CREATEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINT
SubType
SubType string
Format partial-time
Format partial-time
Format partial-time
Default DURATION_WINDOW
Possible Values
DAILY_TIME_DEADLINEDAILY_TIME_WINDOWDURATION_WINDOWSLIDING_WINDOW
Format duration
Format duration
Default false
Format date-time
Possible Values
FOLDERFILEFILE_OR_FOLDERIMAGINARY
Format uri
Format date-time
Format time
Format time
Default {{ trigger.date }}
Default {{ trigger.date }}
Possible Values
EQUALSPREFIXSUFFIX
Default false
SubType
Validation RegExp ^[a-zA-Z0-9][a-zA-Z0-9_-]*
Min length 1
Default true
Default { "type": "DURATION_WINDOW" }
Default PT30S
Format duration
Default PT30S
Format duration
Default PT30S
Format duration
Default PT30S
Format duration
Default PT30S
Format duration
Possible Values
FIRSTLASTSECONDTHIRDFOURTH
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
Default {{ trigger.date }}
Possible Values
MONDAYTUESDAYWEDNESDAYTHURSDAYFRIDAYSATURDAYSUNDAY
Default {{ trigger.date }}
SubType string
Possible Values
CREATEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINT
SubType string
Possible Values
CREATEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINT
Format date-time
Format date-time
Default {{ trigger.date }}
SubType string
Possible Values
CREATEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINT
SubType string
Possible Values
CREATEDRUNNINGPAUSEDRESTARTEDKILLINGSUCCESSWARNINGFAILEDKILLEDCANCELLEDQUEUEDRETRYINGRETRIEDSKIPPEDBREAKPOINT
Default {{ trigger.date }}