{
  "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 likely to be corrupt"
    },
    {
      "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",
      "args": [
        {
          "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 need to enter a password at connection time (see sshd(8) and\nssh-keygen(1) for details)",
      "args": [
        {
          "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)",
      "args": [
        {
          "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",
      "args": [
        {
          "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)",
      "args": [
        {
          "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)",
      "args": [
        {
          "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\nhops may be specified separated by comma characters.  This is a\nshortcut to specify a ProxyJump configuration directive.  This\noption is directly passed to ssh(1)",
      "args": [
        {
          "name": "destination",
          "description": "Scp destination"
        }
      ]
    },
    {
      "names": [
        "-l"
      ],
      "description": "Limits the used bandwidth, specified in Kbit/s",
      "args": [
        {
          "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 listed below, and their possible values, see\nssh_config(5)",
      "args": [
        {
          "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",
      "args": [
        {
          "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",
      "args": [
        {
          "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",
      "args": [
        {
          "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",
      "args": [
        {
          "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])",
      "isVariadic": true,
      "generators": [
        {
          "template": "history"
        }
      ]
    },
    {
      "name": "target",
      "description": "File or directory, local or remote ([user@]host:[path])",
      "generators": [
        {
          "template": "history"
        }
      ]
    }
  ]
}
