Pick up files from SFTP and SMB servers on a schedule, hand each one to a Python service, and connect batch feeds to the databases, queues and APIs that need them.
Learn how to design and build scalable, real-world, production-ready integrations in Python
How to design, build and secure REST APIs, and how to offer services to API clients
A worked integration where interchange files arrive over a file transfer and leave as typed messages
The two protocols, the two ways to drive them, and which one to reach for
Address, credentials, private keys through environment variables and host key checking
Host, port, credentials and share-rooted remote paths
One API for both protocols - upload, download, read, write, list and manage remote entries
Watch a directory, decide when a file is complete, and hand it to a service
What each invocation delivers and what happens when your service refuses a file
Partner drops with marker files, slow uploads, competing consumers and daily batches
Keep connections and their schedules in YAML under version control
Turn the contents of a file into models and convert between formats
Define the shape of what a file contains with Python dataclasses
Where to keep directories, patterns and environment-specific settings
Files are still how a great many organizations exchange data with each other. Banks send settlement files, retailers send stock and price lists, hospitals send interchange files, and payroll, logistics and government systems all trade fixed-width and delimited files on timetables that have been in place for decades. Zato connects to the SFTP and SMB servers those feeds live on, watches the directories they arrive in, and hands each file to a Python service that can validate it, transform it and pass it on to a database, a queue, an API or another file server. The result is that a batch feed becomes an integration like any other, with the same services, the same logging and the same deployment as the rest of your work.
SFTP and SMB, through outgoing SFTP connections and outgoing SMB connections. Both share one API, so a service written against one works against the other.
Add a file transfer schedule to the connection. It looks into a directory as often as you tell it to and invokes your service once per file.
Either by watching it stop changing, or by waiting for a marker file the sender puts down when it is done. See schedules for both modes.
One file transfer item per file, with the name, the full path, the size, the modification time and the contents.
It is either moved to a destination directory of your choosing or deleted, as the schedule says. A file your service refuses is left exactly where it was and comes back on the next run.
Yes - turn claiming on and each file is renamed before anything reads it, so no two servers ever take the same one. See real-world feeds.
Yes - the connection API gives your service the whole remote file system, with no schedule involved.
With enmasse. Connections and their schedules live in YAML and are imported into any environment.
Get started with Zato and turn the files your partners send into integrations you can maintain.