Skip to content
Hoody.com

The endpoints on this page connect protocol-based remote backends — FTP, HDFS, HTTP, SFTP, SMB, and WebDAV — to a Hoody file container. After connecting a backend, mount it into the container’s filesystem with the mount endpoints. Each endpoint accepts a protocol-specific configuration payload and returns the new backend’s metadata, including its id and an empty mount_paths array (a backend must be mounted before it is reachable inside the container).

All endpoints return 201 Created on success and 400 Bad Request when the connection cannot be established or the payload is invalid.

Connect an FTP server as a backend. Supports plain FTP, implicit FTPS (tls: true), and explicit FTPS (explicit_tls: true).

This endpoint takes no parameters.

Request body

NameTypeRequiredDefaultDescription
hoststringYes""FTP host to connect to (e.g. ftp.example.com).
portintegerNo21FTP port number.
userstringNo"user"FTP username.
passstringNo""FTP password.
ask_passwordbooleanNofalseIf set and no password is supplied, Hoody prompts for one.
tlsbooleanNofalseUse Implicit FTPS (FTP over TLS from the start), usually served on port 990. Mutually exclusive with explicit_tls.
explicit_tlsbooleanNofalseUse Explicit FTPS (upgrade a plain text connection with AUTH TLS). Mutually exclusive with tls.
no_check_certificatebooleanNofalseSkip verification of the server’s TLS certificate.
disable_tls13booleanNofalseDisable TLS 1.3 (workaround for buggy FTP servers).
disable_epsvbooleanNofalseDisable EPSV even if the server advertises support.
disable_mlsdbooleanNofalseDisable MLSD even if the server advertises support.
disable_utf8booleanNofalseDisable UTF-8 even if the server advertises support.
force_list_hiddenbooleanNofalseUse LIST -a to force listing of hidden files; disables MLSD.
writing_mdtmbooleanNofalseUse MDTM to set modification time (VsFtpd quirk).
no_check_uploadbooleanNofalseSkip the post-upload size and modification-time verification.
concurrencyintegerNo0Maximum number of FTP simultaneous connections; 0 for unlimited. Use with care — can cause deadlocks.
idle_timeoutintegerNo60Max time before closing idle connections, in seconds. 0 to keep connections indefinitely.
close_timeoutintegerNo60Maximum time to wait for a response to close, in seconds.
shut_timeoutintegerNo60Maximum time to wait for the data connection closing status, in seconds.
tls_cache_sizeintegerNo32Size of the TLS session cache for control and data connections. 0 disables the cache.
socks_proxystringNo""SOCKS5 proxy host. Supports user:pass@host:port, user@host:port, or host:port.
encodingstringNo"35749890"Backend encoding. Accepted values: Asterisk,Ctl,Dot,Slash, BackSlash,Ctl,Del,Dot,RightSpace,Slash,SquareBracket, Ctl,LeftPeriod,Slash.
descriptionstringNo""Description of the remote.
Terminal window
curl -X POST "https://proj-demo123-cont-demo456-files-1.eu-west-1.containers.hoody.icu/api/v1/backends/ftp" \
-H "Content-Type: application/json" \
-d '{
"host": "ftp.example.com",
"user": "alice",
"pass": "s3cret",
"explicit_tls": true,
"port": 21
}'

Connect a Hadoop Distributed File System cluster as a backend. Supports Kerberos authentication via the service_principal_name and data_transfer_protection fields.

This endpoint takes no parameters.

Request body

NameTypeRequiredDefaultDescription
namenodestringYes[]Hadoop namenodes and ports (e.g. namenode-1:8020,namenode-2:8020).
usernamestringNo""Hadoop user name. Accepted value: root.
service_principal_namestringNo""Kerberos SPN for the namenode (e.g. hdfs/namenode.hadoop.lan). Enables KERBEROS authentication.
data_transfer_protectionstringNo""Kerberos data transfer protection. Accepted value: privacy. Used only with KERBEROS enabled.
encodingstringNo"50430082"Backend encoding.
descriptionstringNo""Description of the remote.
Terminal window
curl -X POST "https://proj-demo123-cont-demo456-files-1.eu-west-1.containers.hoody.icu/api/v1/backends/hdfs" \
-H "Content-Type: application/json" \
-d '{
"namenode": "namenode-1.hadoop.lan:8020,namenode-2.hadoop.lan:8020",
"username": "root",
"service_principal_name": "hdfs/namenode.hadoop.lan"
}'

Connect a generic HTTP server as a backend. Treats the URL as a read-only filesystem of HTTP-fetchable resources.

This endpoint takes no parameters.

Request body

NameTypeRequiredDefaultDescription
urlstringYes""URL of the HTTP host to connect to (e.g. https://example.com).
headersstringNo[]Comma-separated key,value HTTP headers applied to all transactions. CSV-encoded values are supported.
no_escapebooleanNofalseDo not escape URL metacharacters in path names.
no_headbooleanNofalseDon’t issue HEAD requests when listing directories. Speeds up listings but loses file sizes and times.
no_slashbooleanNofalseThe site does not end directories with /; treat Content-Type: text/html responses as directories.
descriptionstringNo""Description of the remote.
Terminal window
curl -X POST "https://proj-demo123-cont-demo456-files-1.eu-west-1.containers.hoody.icu/api/v1/backends/http" \
-H "Content-Type: application/json" \
-d '{
"url": "https://downloads.example.com/mirror",
"headers": "\"User-Agent\",\"hoody/1.0\""
}'

Connect an SSH/SFTP server as a backend. Supports password, key file, PEM-encoded private key, and ssh-agent authentication, plus Kerberos-aware SFTP subsystems and external ssh binaries.

This endpoint takes no parameters.

Request body

NameTypeRequiredDefaultDescription
hoststringYes""SSH host to connect to (e.g. example.com).
portintegerNo22SSH port number.
userstringNo"user"SSH username.
passstringNo""SSH password. Leave blank to use ssh-agent.
ask_passwordbooleanNofalseIf set and no password is supplied, Hoody prompts for one and skips the ssh-agent.
key_filestringNo""Path to a PEM-encoded private key file. ~ and ${RCLONE_CONFIG_DIR} are expanded. Leave blank to use ssh-agent.
key_file_passstringNo""Passphrase for an old-format PEM-encrypted private key file.
key_pemstringNo""Raw PEM-encoded private key on a single line with \n line endings. Overrides key_file.
key_use_agentbooleanNofalseForce the use of ssh-agent. With key_file set, only that key is requested.
pubkey_filestringNo""Path to the public key file (for public certificate authentication).
pubkeystringNo""Inline SSH public certificate. Overrides pubkey_file.
known_hosts_filestringNo""Path to a known_hosts file enabling server host key validation. Accepted value: ~/.ssh/known_hosts.
use_insecure_cipherbooleanNofalseEnable insecure ciphers and key exchange methods. Must be false if ciphers or key_exchange are set.
ciphersstringNo[]Space-separated list of session encryption ciphers, ordered by preference.
key_exchangestringNo[]Space-separated list of key exchange algorithms, ordered by preference.
macsstringNo[]Space-separated list of MAC algorithms, ordered by preference.
host_key_algorithmsstringNo[]Space-separated list of host key algorithms, ordered by preference.
subsystemstringNo"sftp"SSH2 subsystem on the remote host.
server_commandstringNo""Path or command to run an SFTP server on the remote. Overrides subsystem.
sshstringNo[]Path and arguments to an external ssh binary. Skips internal SSH configuration.
shell_typestringNo""Type of remote SSH shell. Accepted values: none, unix, powershell, cmd. Blank enables autodetect.
path_overridestringNo""Override the path used by SSH shell commands (useful when SFTP and shell paths differ, e.g. Synology).
set_envstringNo[]Environment variables passed to the SFTP client and shell commands (VAR=value, space-separated).
set_modtimebooleanNotrueSet the modification time on the remote after upload.
md5sum_commandstringNo""Command used to read MD5 hashes. Blank for autodetect.
sha1sum_commandstringNo""Command used to read SHA-1 hashes. Blank for autodetect.
chunk_sizestringNo"32768"Upload and download SFTP protocol packet size, in bytes. Default is the RFC maximum; larger values can improve high-latency throughput.
concurrencyintegerNo64Maximum number of outstanding requests per file. Higher values increase throughput at the cost of memory.
connectionsintegerNo0Maximum number of SFTP simultaneous connections; 0 for unlimited.
idle_timeoutintegerNo60Max time before closing idle connections, in seconds. 0 to keep connections indefinitely.
disable_concurrent_readsbooleanNofalseDisable concurrent reads (use when a server limits per-file downloads).
disable_concurrent_writesbooleanNofalseDisable concurrent writes during upload.
disable_hashcheckbooleanNofalseDisable the SSH probe that determines whether remote hashing is available.
copy_is_hardlinkbooleanNofalseImplement server-side copies as hardlinks. Requires server support.
skip_linksbooleanNofalseSkip symlinks and other non-regular files.
use_fstatbooleanNofalseUse fstat instead of stat (works around servers that limit open files).
socks_proxystringNo""SOCKS5 proxy host. Supports user:pass@host:port, user@host:port, or host:port.
descriptionstringNo""Description of the remote.
Terminal window
curl -X POST "https://proj-demo123-cont-demo456-files-1.eu-west-1.containers.hoody.icu/api/v1/backends/sftp" \
-H "Content-Type: application/json" \
-d '{
"host": "files.example.com",
"user": "deploy",
"port": 22,
"key_file": "~/.ssh/id_ed25519",
"key_use_agent": true,
"known_hosts_file": "~/.ssh/known_hosts"
}'

Connect an SMB / CIFS share as a backend. Windows shares are always case-insensitive.

This endpoint takes no parameters.

Request body

NameTypeRequiredDefaultDescription
hoststringYes""SMB server hostname (e.g. example.com).
portintegerNo445SMB port number.
userstringNo"user"SMB username.
passstringNo""SMB password.
domainstringNo"WORKGROUP"Domain name for NTLM authentication.
spnstringNo""Service principal name (e.g. cifs/remotehost:1020) required by some clustered servers.
case_insensitivebooleanNotrueWhether the server is case-insensitive. Always true for Windows shares.
hide_special_sharebooleanNotrueHide special shares such as print$.
idle_timeoutintegerNo60Max time before closing idle connections, in seconds. 0 to keep connections indefinitely.
encodingstringNo"56698766"Backend encoding.
descriptionstringNo""Description of the remote.
Terminal window
curl -X POST "https://proj-demo123-cont-demo456-files-1.eu-west-1.containers.hoody.icu/api/v1/backends/smb" \
-H "Content-Type: application/json" \
-d '{
"host": "nas.corp.example.com",
"user": "alice",
"pass": "s3cret",
"domain": "CORP"
}'

Connect a WebDAV server as a backend. Includes presets for several popular WebDAV vendors.

This endpoint takes no parameters.

Request body

NameTypeRequiredDefaultDescription
urlstringYes""URL of the WebDAV host (e.g. https://example.com).
userstringNo""Username. For NTLM, use the Domain\\User format.
passstringNo""Password.
bearer_tokenstringNo""Bearer token (e.g. a Macaroon) used instead of user/pass.
bearer_token_commandstringNo""Command that prints a bearer token to stdout.
vendorstringNo""WebDAV vendor preset. Accepted values: fastmail, nextcloud, owncloud, sharepoint, sharepoint-ntlm, hoody-vfs, other.
headersstringNo[]Comma-separated key,value HTTP headers applied to all transactions. CSV-encoded values are supported.
auth_redirectbooleanNofalsePreserve the Authorization header across redirects (workaround for some servers).
nextcloud_chunk_sizestringNo"10485760"Nextcloud upload chunk size, in bytes. Set to 0 to disable chunked uploading.
owncloud_exclude_mountsbooleanNofalseExclude ownCloud-mounted storages from listings.
owncloud_exclude_sharesbooleanNofalseExclude ownCloud shares from listings.
pacer_min_sleepintegerNo0Minimum sleep between API calls, in seconds.
unix_socketstringNo""Path to a Unix domain socket to dial instead of opening a TCP connection.
encodingstringNo""Backend encoding. Defaults to identity unless vendor is sharepoint-ntlm.
descriptionstringNo""Description of the remote.
Terminal window
curl -X POST "https://proj-demo123-cont-demo456-files-1.eu-west-1.containers.hoody.icu/api/v1/backends/webdav" \
-H "Content-Type: application/json" \
-d '{
"url": "https://cloud.example.com/remote.php/dav/files/alice",
"user": "alice",
"pass": "s3cret",
"vendor": "nextcloud"
}'