{
  "name": "sftp",
  "description": "OpenSSH secure file transfer",
  "options": [
    {
      "names": [
        "--help",
        "-h"
      ],
      "description": "Show help for sftp"
    },
    {
      "names": [
        "-4"
      ],
      "description": "Forces scp to use IPv4 addresses only"
    },
    {
      "names": [
        "-6"
      ],
      "description": "Forces scp to use IPv6 addresses only"
    },
    {
      "names": [
        "-A"
      ],
      "description": "Allows forwarding of ssh-agent(1) to the remote system. The default is not to forward an authentication agent"
    },
    {
      "names": [
        "-a"
      ],
      "description": "Attempt to continue interrupted transfers rather than overwriting\nexisting partial or complete copies of files.  If the partial\ncontents differ from those being transferred, then the resultant\nfile is"
    },
    {
      "names": [
        "-B"
      ],
      "description": "Specify the size of the buffer that sftp uses when transferring\nfiles.  Larger buffers require fewer round trips at the cost of\nhigher memory consumption.  The default is 32768 bytes",
      "takes_arg": true,
      "arg": {
        "name": "buffer_size",
        "description": "The buffer size",
        "suggestions": [
          "32768"
        ]
      }
    },
    {
      "names": [
        "-b"
      ],
      "description": "Batch mode reads a series of commands from an input batchfile\ninstead of stdin.  Since it lacks user interaction it should be\nused in conjunction with non-interactive authentication to obviate\nthe nee",
      "takes_arg": true,
      "arg": {
        "name": "batchfile",
        "description": "The batch file",
        "template": "filepaths"
      }
    },
    {
      "names": [
        "-C"
      ],
      "description": "Compression enable. Passes the -C flag to ssh(1) to enable compression"
    },
    {
      "names": [
        "-c"
      ],
      "description": "Selects the cipher to use for encrypting the data transfer. This option is directly passed to ssh(1)",
      "takes_arg": true,
      "arg": {
        "name": "cipher",
        "description": "The selected cipher specification"
      }
    },
    {
      "names": [
        "-D"
      ],
      "description": "Connect directly to a local sftp server (rather than via ssh(1)).\nThis option may be useful in debugging the client and server",
      "takes_arg": true,
      "arg": {
        "name": "sftp_server_path",
        "description": "Path to the SFTP server"
      }
    },
    {
      "names": [
        "-F"
      ],
      "description": "Specifies an alternative per-user configuration file for ssh. This option is directly passed to ssh(1)",
      "takes_arg": true,
      "arg": {
        "name": "ssh_config",
        "description": "The selected ssh config"
      }
    },
    {
      "names": [
        "-f"
      ],
      "description": "Requests that files be flushed to disk immediately after transfer"
    },
    {
      "names": [
        "-i"
      ],
      "description": "Selects the file from which the identity (private key) for public key authentication is read. This option is directly passed to ssh(1)",
      "takes_arg": true,
      "arg": {
        "name": "identity_file",
        "description": "Specified identity file"
      }
    },
    {
      "names": [
        "-J"
      ],
      "description": "Connect to the target host by first making an scp connection to the\njump host described by destination and then establishing a TCP\nforwarding to the ultimate destination from there.  Multiple jump\nhop",
      "takes_arg": true,
      "arg": {
        "name": "destination",
        "description": "Scp destination"
      }
    },
    {
      "names": [
        "-l"
      ],
      "description": "Limits the used bandwidth, specified in Kbit/s",
      "takes_arg": true,
      "arg": {
        "name": "limit",
        "description": "Limit bandwidth in Kbit/s"
      }
    },
    {
      "names": [
        "-N"
      ],
      "description": "Disables quiet mode, e.g. to override the implicit quiet mode set by the -b flag"
    },
    {
      "names": [
        "-o"
      ],
      "description": "Can be used to pass options to ssh in the format used in\nssh_config(5).  This is useful for specifying options for which\nthere is no separate scp command-line flag.  For full details of\nthe options li",
      "takes_arg": true,
      "arg": {
        "name": "option",
        "suggestions": [
          "AddressFamily",
          "BatchMode",
          "BindAddress",
          "ChallengeResponseAuthentication",
          "CheckHostIP",
          "Cipher",
          "Ciphers",
          "ClearAllForwardings",
          "Compression",
          "CompressionLevel",
          "ConnectionAttempts",
          "ConnectTimeout",
          "ControlMaster",
          "ControlPath",
          "ControlPersist",
          "DynamicForward",
          "EscapeChar",
          "ExitOnForwardFailure",
          "ForwardAgent",
          "ForwardX11",
          "ForwardX11Timeout",
          "ForwardX11Trusted",
          "GatewayPorts",
          "GlobalKnownHostsFile",
          "GSSAPIAuthentication",
          "GSSAPIDelegateCredentials",
          "HashKnownHosts",
          "Host",
          "HostbasedAuthentication",
          "HostKeyAlgorithms",
          "HostKeyAlias",
          "HostName",
          "IdentityFile",
          "IdentitiesOnly",
          "IPQoS",
          "KbdInteractiveAuthentication",
          "KbdInteractiveDevices",
          "KexAlgorithms",
          "LocalCommand",
          "LocalForward",
          "LogLevel",
          "MACs",
          "NoHostAuthenticationForLocalhost",
          "NumberOfPasswordPrompts",
          "PasswordAuthentication",
          "PermitLocalCommand",
          "PKCS11Provider",
          "Port",
          "PreferredAuthentications",
          "Protocol",
          "ProxyCommand",
          "PubkeyAuthentication",
          "RekeyLimit",
          "RequestTTY",
          "RhostsRSAAuthentication",
          "RSAAuthentication",
          "SendEnv",
          "ServerAliveInterval",
          "ServerAliveCountMax",
          "StrictHostKeyChecking",
          "TCPKeepAlive",
          "Tunnel",
          "TunnelDevice",
          "UsePrivilegedPort",
          "User",
          "UserKnownHostsFile",
          "VerifyHostKeyDNS",
          "VisualHostKey",
          "XAuthLocation"
        ]
      }
    },
    {
      "names": [
        "-P"
      ],
      "description": "Specifies the port to connect to on the remote host.  Note that\nthis option is written with a capital ‘P’, because -p is already\nreserved for preserving the times and modes of the file",
      "takes_arg": true,
      "arg": {
        "name": "port"
      }
    },
    {
      "names": [
        "-p"
      ],
      "description": "Preserves modification times, access times, and modes from the original file"
    },
    {
      "names": [
        "-q"
      ],
      "description": "Quiet mode: disables the progress meter as well as warning and diagnostic messages from ssh(1)"
    },
    {
      "names": [
        "-R"
      ],
      "description": "Specify how many requests may be outstanding at any one time.\nIncreasing this may slightly improve file transfer speed but will\nincrease memory usage.  The default is 64 outstanding requests",
      "takes_arg": true,
      "arg": {
        "name": "num_requests",
        "description": "The number of requests",
        "suggestions": [
          "64"
        ]
      }
    },
    {
      "names": [
        "-r"
      ],
      "description": "Recursively copy entire directories.  Note that scp follows symbolic links encountered in the tree traversal"
    },
    {
      "names": [
        "-S"
      ],
      "description": "Name of program to use for the encrypted connection.  The program must understand ssh(1) options",
      "takes_arg": true,
      "arg": {
        "name": "program"
      }
    },
    {
      "names": [
        "-s"
      ],
      "description": "Specifies the SSH2 subsystem or the path for an sftp server on the\nremote host.  A path is useful when the remote sshd(8) does not\nhave an sftp subsystem configured",
      "takes_arg": true,
      "arg": {
        "name": "subsystem | sftp_server",
        "description": "Path to the SFTP server"
      }
    },
    {
      "names": [
        "-v"
      ],
      "description": "Verbose mode.  Causes scp and ssh(1) to print debugging messages about their progress. This is helpful in debugging connection, authentication, and configuration problems"
    }
  ],
  "args": [
    {
      "name": "sources",
      "description": "File or directory, local or remote ([user@]host:[path])",
      "is_variadic": true
    },
    {
      "name": "target",
      "description": "File or directory, local or remote ([user@]host:[path])"
    }
  ]
}
