I've been digging into http://remotestorage.io/ a bit ...
Here's what the spec says a given implementation should do. I love the simplicity:
- GET a folder: retrieve the names and current versions of the documents and subfolders currently contained by the folder
- GET a document: retrieve its content type, current version, and contents
- PUT a document: store a new version, its content type, and contents, conditional on the current version
- DELETE a document: remove it from the storage, conditional on the current version
Like Git, folders are implicitly created as a side effect of creating documents, and empty folders do not exist.