These are the design decisions directly connected to the protocol:
Single data object for get, put, delete and replace
It is only possible to perform get,put,replace and delete operations on a single file.
The reason for this choice is to have a simple protocol. Requests on multiple data objects would complicate data transmission of the different files as well as error handling.
Messages in primitives: repeats information
For example identifiers are repeated. The reason for this choice is that we want to support asynchronous communication with as little need for memory of previous operation as possible. This enables clients to maintain a minimum of state.