Skip to content

Connect protocol-based storage backends so Hoody can mount them as file sources. These endpoints register FTP, SFTP, SMB, WebDAV, HTTP, and HDFS remote file systems. Use them when integrating on-premise file servers, SSH-accessible hosts, web-based file collections, or Hadoop clusters.

All endpoints register a new backend and return its identifier. Mount the backend separately to expose it on a filesystem path.

Register an FTP backend. Supports implicit FTPS (typically port 990) and explicit FTPS (typically port 21).

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
hoststringYes""FTP host to connect to. E.g. ftp.example.com.
ask_passwordbooleanNofalseAllow asking for FTP password when needed.
close_timeoutintegerNo60Maximum time to wait for a response to close (seconds).
concurrencyintegerNo0Maximum number of FTP simultaneous connections (0 for unlimited).
descriptionstringNo""Description of the remote.
disable_epsvbooleanNofalseDisable using EPSV even if the server advertises support.
disable_mlsdbooleanNofalseDisable using MLSD even if the server advertises support.
disable_tls13booleanNofalseDisable TLS 1.3 (workaround for buggy FTP servers).
disable_utf8booleanNofalseDisable using UTF-8 even if the server advertises support.
encodingstringNo"35749890"The encoding for the backend. See the encoding section in the overview.
explicit_tlsbooleanNofalseUse Explicit FTPS (FTP over TLS). Cannot be combined with tls.
force_list_hiddenbooleanNofalseUse LIST -a to force listing of hidden files. Disables MLSD.
idle_timeoutintegerNo60Max time before closing idle connections (seconds). 0 keeps connections indefinitely.
no_check_certificatebooleanNofalseDo not verify the TLS certificate of the server.
no_check_uploadbooleanNofalseDon’t verify the upload is OK after writing.
passstringNo""FTP password.
portintegerNo21FTP port number.
shut_timeoutintegerNo60Maximum time to wait for data connection closing status (seconds).
socks_proxystringNo""Socks 5 proxy host. Format: user:pass@host:port.
tlsbooleanNofalseUse Implicit FTPS (FTP over TLS). Cannot be combined with explicit_tls.
tls_cache_sizeintegerNo32Size of TLS session cache. Use 0 to disable.
userstringNo"user"FTP username.
writing_mdtmbooleanNofalseUse MDTM to set modification time (VsFtpd quirk).
Terminal window
curl -X POST https://api.example.com/api/v1/backends/ftp \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"host": "ftp.example.com",
"user": "admin",
"pass": "s3cret",
"port": 21,
"explicit_tls": false
}'

Register a Hadoop Distributed File System backend.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
namenodestringYes""Hadoop name nodes and ports. E.g. namenode-1:8020,namenode-2:8020.
data_transfer_protectionstringNo""Kerberos data transfer protection. Allowed value: privacy.
descriptionstringNo""Description of the remote.
encodingstringNo"50430082"The encoding for the backend. See the encoding section in the overview.
service_principal_namestringNo""Kerberos service principal name for the namenode. E.g. hdfs/namenode.hadoop.docker.
usernamestringNo""Hadoop user name. Allowed value: root.
Terminal window
curl -X POST https://api.example.com/api/v1/backends/hdfs \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"namenode": "namenode-1.hadoop.local:8020,namenode-2.hadoop.local:8020",
"username": "hdfs"
}'

Register an HTTP backend for read-only access to web-based file collections.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
urlstringYes""URL of the HTTP host. E.g. https://example.com, or https://user:pass@example.com for basic auth.
descriptionstringNo""Description of the remote.
headersstringNo""Comma-separated key,value HTTP headers for all transactions. Supports standard CSV encoding.
no_escapebooleanNofalseDo not escape URL metacharacters in path names.
no_headbooleanNofalseDon’t use HEAD requests to discover file sizes or check existence.
no_slashbooleanNofalseTreat text/html responses as directories (for sites without trailing /).
Terminal window
curl -X POST https://api.example.com/api/v1/backends/http \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/files",
"no_head": true
}'

Register an SFTP backend. Supports key-based, password, and ssh-agent authentication.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
hoststringYes""SSH host to connect to. E.g. example.com.
ask_passwordbooleanNofalseAllow asking for SFTP password when needed. Skips ssh-agent when true.
chunk_sizestringNo"32768"Upload and download chunk size. RFC max is 32768; values up to 255000 work with OpenSSH.
ciphersstringNo""Space-separated cipher list, ordered by preference. Incompatible with use_insecure_cipher.
concurrencyintegerNo64Maximum number of outstanding requests per file.
connectionsintegerNo0Maximum number of SFTP simultaneous connections (0 for unlimited).
copy_is_hardlinkbooleanNofalseImplement server-side copies via hardlinks.
descriptionstringNo""Description of the remote.
disable_concurrent_readsbooleanNofalseDisable concurrent reads (workaround for servers that limit file downloads).
disable_concurrent_writesbooleanNofalseDisable concurrent writes.
disable_hashcheckbooleanNofalseDisable execution of SSH commands for remote file hashing.
host_key_algorithmsstringNo""Space-separated host key algorithm list, ordered by preference.
idle_timeoutintegerNo60Max time before closing idle connections (seconds). 0 keeps connections indefinitely.
key_exchangestringNo""Space-separated key exchange algorithm list, ordered by preference.
key_filestringNo""Path to PEM-encoded private key file. Leave blank to use ssh-agent.
key_file_passstringNo""Passphrase for the PEM-encoded private key file.
key_pemstringNo""Raw PEM-encoded private key as a single line with \n line breaks. Overrides key_file.
key_use_agentbooleanNofalseForce usage of the ssh-agent.
known_hosts_filestringNo""Path to known_hosts file (e.g. ~/.ssh/known_hosts). Enables server host key validation.
macsstringNo""Space-separated MAC algorithm list, ordered by preference.
md5sum_commandstringNo""Command to read MD5 hashes. Blank for autodetect.
passstringNo""SSH password. Leave blank to use ssh-agent.
path_overridestringNo""Override path used by SSH shell commands. Useful for Synology NAS boxes.
portintegerNo22SSH port number.
pubkeystringNo""SSH public certificate for public certificate-based auth. Overrides pubkey_file.
pubkey_filestringNo""Path to public key file for public certificate-based auth.
server_commandstringNo""Path or command to run an SFTP server on the remote host. Ignores subsystem.
set_envstringNo""Space-separated VAR=value environment variables for SFTP and commands.
set_modtimebooleanNotrueSet the modified time on the remote.
sha1sum_commandstringNo""Command to read SHA1 hashes. Blank for autodetect.
shell_typestringNo""SSH shell type. Allowed values: none, unix, powershell, cmd. Blank for autodetect.
skip_linksbooleanNofalseSkip symlinks and any non-regular files.
socks_proxystringNo""Socks 5 proxy host. Format: user:pass@host:port.
sshstringNo""Path and arguments to an external ssh binary. Overrides internal SSH config.
subsystemstringNo"sftp"SSH2 subsystem on the remote host.
use_fstatbooleanNofalseUse fstat instead of stat. Workaround for IBM Sterling SFTP servers.
use_insecure_cipherbooleanNofalseEnable insecure ciphers (aes128-cbc, 3des-cbc, etc.). Incompatible with ciphers and key_exchange.
userstringNo"user"SSH username.
Terminal window
curl -X POST https://api.example.com/api/v1/backends/sftp \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"host": "sftp.example.com",
"user": "deploy",
"pass": "s3cret",
"port": 22
}'

Register an SMB / CIFS backend for Windows shares and Samba servers.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
hoststringYes""SMB server hostname to connect to. E.g. example.com.
case_insensitivebooleanNotrueWhether the server is configured to be case-insensitive. Always true on Windows shares.
descriptionstringNo""Description of the remote.
domainstringNo"WORKGROUP"Domain name for NTLM authentication.
encodingstringNo"56698766"The encoding for the backend. See the encoding section in the overview.
hide_special_sharebooleanNotrueHide special shares (e.g. print$) that users aren’t supposed to access.
idle_timeoutintegerNo60Max time before closing idle connections (seconds). 0 keeps connections indefinitely.
passstringNo""SMB password.
portintegerNo445SMB port number.
spnstringNo""Service principal name. E.g. cifs/remotehost:1020 for clusters.
userstringNo"user"SMB username.
Terminal window
curl -X POST https://api.example.com/api/v1/backends/smb \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"host": "fileserver.example.com",
"user": "admin",
"pass": "s3cret",
"domain": "CORPORATE"
}'

Register a WebDAV backend. Supports Nextcloud, ownCloud, SharePoint, Fastmail, and generic WebDAV servers.

This endpoint takes no parameters.

FieldTypeRequiredDefaultDescription
urlstringYes""URL of the WebDAV host. E.g. https://example.com.
auth_redirectbooleanNofalsePreserve the Authorization header across redirects.
bearer_tokenstringNo""Bearer token instead of user/password (e.g. a Macaroon).
bearer_token_commandstringNo""Command to run to obtain a bearer token.
descriptionstringNo""Description of the remote.
encodingstringNo""The encoding for the backend. See the encoding section in the overview.
headersstringNo""Comma-separated key,value HTTP headers for all transactions. Supports standard CSV encoding.
nextcloud_chunk_sizestringNo"10485760"Nextcloud upload chunk size (0 to disable chunked uploads).
owncloud_exclude_mountsbooleanNofalseExclude ownCloud mounted storages.
owncloud_exclude_sharesbooleanNofalseExclude ownCloud shares.
pacer_min_sleepintegerNo0Minimum sleep between API calls (seconds).
passstringNo""WebDAV password.
unix_socketstringNo""Path to a Unix domain socket to dial instead of opening a TCP connection.
userstringNo""WebDAV username. For NTLM, use the Domain\User format.
vendorstringNo""WebDAV vendor. Allowed values: fastmail, nextcloud, owncloud, sharepoint, sharepoint-ntlm, hoody-vfs, other.
Terminal window
curl -X POST https://api.example.com/api/v1/backends/webdav \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"url": "https://cloud.example.com/remote.php/dav",
"user": "alice",
"pass": "s3cret",
"vendor": "nextcloud"
}'