Skip to content

SFTP

SFTP file transfer — upload, download, list, and manage files on remote servers via SSH File Transfer Protocol.

PropertyValue
Typecustom
Authenticationbasic
CategoryGeneric
FieldTypeRequiredDescription
hoststringYesSFTP server hostname
portnumberNoPort (default: 22)
usernamestringYesSSH username
passwordstringNoSSH password (if not using key auth)
private_keystringNoPEM-encoded SSH private key
passphrasestringNoPassphrase for the private key
base_pathstringNoBase directory path (default: /)

Upload a file to a remote SFTP server.

EndpointPOST /upload
MethodPOST

Download a file from a remote SFTP server.

EndpointGET /download/{remotePath}
MethodGET

List files and subdirectories in a remote SFTP directory.

EndpointGET /ls/{remotePath}
MethodGET

Delete a file from a remote SFTP server.

EndpointDELETE /file/{remotePath}
MethodDELETE

Create a directory on the remote SFTP server. Creates parent directories if needed.

EndpointPOST /mkdir
MethodPOST
flows/generate-report-and-upload-sftp.yaml
flow: generate-report-and-upload-sftp
version: 1
description: Generate a CSV report, upload to partner SFTP server, and send confirmation email
source:
connector: internal-api
trigger: schedule
cron: "0 6 * * 1"
steps:
- name: fetch-weekly-data
target: postgresql-prod
action: query
mapping:
table: order_summaries
where:
created_at: ">= now() - interval '7 days'"
store_as: report_data
- name: upload-to-partner
target: sftp-partner
action: upload-file
mapping:
remotePath: /incoming/reports/weekly-{{ now | date("YYYY-MM-DD") }}.csv
content: report_data | to_csv
overwrite: true
store_as: upload_result
- name: send-confirmation
target: sendgrid-prod
action: send-email
mapping:
to: partner-ops@example.com
subject: "Weekly report uploaded"
body: "Report uploaded to /incoming/reports/weekly-{{ now | date('YYYY-MM-DD') }}.csv ({{ report_data | length }} rows)"
on_error:
retry: 3x exponential(30s)
then: dead-letter