File Put¶
Description¶
File Put is a destination node that uploads the connected upstream stream or published artifact to an SFTP destination. Use it when a pipeline has produced file-like output that should be delivered to a configured remote path.
File Put consumes exactly one upstream payload. When a node has more than one upstream producer, use Input producer node (optional) to identify which upstream node should provide the file or stream.
Field reference¶
| Field | Description |
|---|---|
| Protocol | Required. File transfer protocol to use. File Put currently supports sftp only. |
| Account | Required. Account UUID used for SFTP authentication. The selected account must contain a username and either password-based or SSH key-based credentials. |
| Host | Required. SFTP host name or IP address. Enter the host only. Do not include a URL scheme, path, username, slashes, backslashes, whitespace, or @. |
| Port | Optional. SFTP port number. Defaults to 22. The value must be an integer between 1 and 65535. |
| Remote path | Required. Remote file path to upload to. Use forward slashes. If the path ends with /, SchemAlign appends the upstream filename or a safe fallback filename. This field supports expressions. |
| Ensure remote directory exists | Optional. When enabled, SchemAlign attempts to create missing remote parent directories before uploading the file. Defaults to on. |
| Input producer node (optional) | Optional. Use only when this node has multiple upstream producers. Accepts graph node id formats such as 7, node_7, or node:7. |
| Prefer published artifact | Optional. When enabled, SchemAlign prefers a published artifact copy before falling back to the in-memory stream handoff. Defaults to off. |
When to use File Put¶
Use this node when the pipeline should:
- upload a file produced by an upstream source or compose node
- deliver transformed output to an SFTP location
- copy an upstream file from one configured location to another
- use a runtime value or date template in the remote upload path
- prefer a published artifact when both a stream and artifact are available
File Put is a destination node. It normally appears at the end of a pipeline branch.
Common pipeline patterns¶
| Pattern | Use case |
|---|---|
SQL Transform -> File Put |
Transform data, publish an output file, then upload it to SFTP. |
File Get -> File Put |
Relay a retrieved file to a different configured destination. |
HTTP Get -> SQL Loader -> SQL Transform -> File Put |
Retrieve API data, prepare it with SQL, and deliver a file output. |
Inbound HTTP Request -> SQL Transform -> File Put |
Process an inbound request and write the result to SFTP. |
Expressions and path templates¶
File Put supports expressions in Remote path. Use expressions when the upload path needs runtime values such as dates, run identifiers, or values prepared earlier in the pipeline.
Examples:
| Remote path | Result style |
|---|---|
/outbound/{{yyyymmdd}}/result.csv |
Uses a system date value in the path. |
/outbound/{{run_id}}/result.csv |
Includes the pipeline run id in the path. |
/outbound/{{date}}/result.csv |
Uses the node's built-in date template format. |
/outbound/{{timestamp}}/result.csv |
Uses the node's built-in timestamp template format. |
File Put also keeps compatibility with existing date-slice templates such as {new Date().toISOString().slice(0,10)}. Unknown single-brace expressions are left intact by the node-level path renderer.
Use / as the path separator. Backslashes are rejected.
Input behavior¶
File Put requires a connected upstream producer. It can upload either:
| Input mode | Description |
|---|---|
| Stream | Uploads bytes handed off directly from the upstream node. This is the default path for stream-producing nodes. |
| Published artifact | Uploads a durable artifact file produced by an upstream node. Enable Prefer published artifact when the artifact copy should be used first. |
The legacy input_artifact setting is no longer supported. Connect an upstream producer and use Input producer node (optional) only when multiple upstream nodes can feed the destination.
Authentication¶
File Put requires an SFTP account. The selected account must be available to the current project and must contain valid credentials.
Supported credential patterns are:
| Account type | Required credential details |
|---|---|
| Basic authentication | Username and password. |
| SSH key | Username and private key. A key passphrase may also be supplied when required by the key. |
Do not place usernames, passwords, private keys, or key passphrases in Host, Remote path, or expression values. Store credentials in an Account instead.
Output behavior¶
After upload, File Put records a destination result that includes the upload status, protocol, host, port, resolved remote path, remote path template, uploaded filename, selected input producer, input mode, and account reference.
File Put also publishes a small destination-result payload handle for downstream runtime visibility. The destination-result payload is metadata about the upload, not a copy of the uploaded file contents.
Validation and common errors¶
| Message or condition | What it means | How to fix it |
|---|---|---|
file_put currently supports protocol=sftp only |
A protocol other than SFTP was configured. | Use sftp. |
host is required |
Host is blank. | Enter the SFTP host name or IP address. |
host must not include a scheme |
Host includes text such as sftp://. |
Enter only the host name or IP address. |
host contains illegal characters |
Host includes whitespace, slashes, backslashes, or @. |
Remove path, userinfo, and invalid characters from Host. |
port must be an integer |
Port is not numeric. | Enter a valid port number, usually 22. |
port must be between 1 and 65535 |
Port is outside the valid TCP port range. | Enter a port between 1 and 65535. |
file_put requires config.remote_path |
Remote path is blank. | Enter the remote path to upload to. |
file_put requires config.account_id or config.account_name |
No account was selected. | Select an SFTP account that is available to the project. |
file_put input_artifact is no longer supported |
An old configuration is trying to use the retired artifact selector. | Connect an upstream producer and use Input producer node (optional) only when needed. |
file_put expected upstream stream bytes but received no payload |
The selected upstream node did not provide stream bytes or an artifact. | Check the upstream node output and graph connection. |
file_put remote_path resolved to empty string |
Expression or template rendering produced a blank path. | Review the Remote path expression or template. |
remote_path must use '/' separators |
Remote path contains backslashes. | Replace backslashes with forward slashes. |
Account ... has no username configured |
The selected account is missing a username. | Update the account credentials. |
Account is basic_auth but has no password |
The selected password-based account is incomplete. | Add the password to the account credentials. |
Account is ssh_key but has no private_key |
The selected SSH key account is incomplete. | Add the private key to the account credentials. |
Unsupported SSH private key format |
The SSH key could not be parsed. | Use a supported private key format. |
| Upstream artifact path is not available or not a file | The selected artifact cannot be uploaded. | Confirm the upstream node published an artifact and that the file exists. |
Security notes¶
- Use Accounts for SFTP credentials; do not paste secrets into node fields.
- Keep Host limited to the destination host name or IP address.
- Review Remote path expressions before production use.
- File Put enforces project account scoping before using selected credentials.
- File Put validates local artifact paths before uploading published files.