You could go with target-sftp, target-ftp , but then you just reverse the problem.
No matter what there's a matrix of capabilities
I think you either point everyone to use a library that implements sftp, ftp, etc in a similar way and pass in nested properties.
Or you add a target on your target