// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/sftp-source.svg[] SFTP Source

*Provided by: "Apache Software Foundation"*

Receive data from an SFTP Server.

== Configuration Options

The following table summarizes the configuration options available for the `sftp-source` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *directoryName {empty}* *| Directory Name| The starting directory| string| | 
| *host {empty}* *| Host| Hostname of the SFTP server| string| | 
| *password {empty}* *| Password| The password to access the SFTP server| string| | 
| *port {empty}* *| Port| Port of the FTP server| string| `22`| 
| *username {empty}* *| Username| The username to access the SFTP server| string| | 
| idempotent| Idempotency| Skip already processed files.| boolean| `true`| 
| passiveMode| Passive Mode| Sets passive mode connection| boolean| `false`| 
| recursive| Recursive| If a directory, will look for files in all the sub-directories as well.| boolean| `false`| 
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `sftp-source` can be used in various contexts.

=== Knative Source

The `sftp-source` Kamelet can be used as Knative source by binding it to a Knative object.

.sftp-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: sftp-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: sftp-source
    properties:
      directoryName: "The Directory Name"
      host: "The Host"
      password: "The Password"
      username: "The Username"
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel

----

Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `sftp-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f sftp-source-binding.yaml
----
// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
