Update guide with extended behavior
authorSofia Papagiannaki <papagian@gmail.com>
Tue, 5 Jul 2011 09:05:08 +0000 (12:05 +0300)
committerSofia Papagiannaki <papagian@gmail.com>
Tue, 5 Jul 2011 09:05:08 +0000 (12:05 +0300)
docs/source/devguide.rst

index 0f89ca5..80537ec 100644 (file)
@@ -25,9 +25,10 @@ Document Revisions
 =========================  ================================
 Revision                   Description
 =========================  ================================
-0.4 (June 30, 2011)        Object permissions and account groups.
+0.4 (July 01, 2011)        Object permissions and account groups.
 \                          Control versioning behavior and container quotas with container policy directives.
 \                          Support updating/deleting individual metadata with ``POST``.
+\                          Create object using hashmap.
 0.3 (June 14, 2011)        Large object support with ``X-Object-Manifest``.
 \                          Allow for publicly available objects via ``https://hostname/public``.
 \                          Support time-variant account/container listings. 
@@ -472,6 +473,7 @@ GET
 Request Header Name   Value
 ====================  ================================
 Range                 Optional range of data to retrieve
+If-Range              Retrieve the missing part if entity is unchanged; otherwise, retrieve the entire new entity (used together with Range header)
 If-Match              Retrieve if ETags match
 If-None-Match         Retrieve if ETags don't match
 If-Modified-Since     Retrieve if object has changed since provided timestamp
@@ -584,6 +586,23 @@ X-Object-Meta-*       Optional user defined metadata
 
 |
 
+======================  ===================================
+Request Parameter Name  Value
+======================  ===================================
+format                  Optional extended request type (can be ``json``) to create the object by suppling its hashmap instead
+======================  ===================================
+
+The request is the object's data (or part of it), except if a hashmap is provided with the ``format`` parameter.  If format is used and all different parts are stored in the server, the object is created otherwise the server returns Conflict (409) with the list of the missing parts. 
+
+Hashmaps expose the underlying storage format of the object.
+
+Example ``format=json`` request:
+
+::
+
+  {"block_hash": "sha1", "hashes": ["7295c41da03d7f916440b98e32c4a2a39351546c", ...], "block_size": 131072, "bytes": 242}
+
+
 ==========================  ===============================
 Reply Header Name           Value
 ==========================  ===============================
@@ -599,6 +618,7 @@ Return Code                  Description
 409 (Conflict)               The object can not be created from the provided hashmap, or there are conflicting permissions (a list of missing hashes, or a conflicting sharing path will be included in the reply - in JSON format)
 411 (Length Required)        Missing ``Content-Length`` or ``Content-Type`` in the request
 422 (Unprocessable Entity)   The MD5 checksum of the data written to the storage system does not match the (optionally) supplied ETag value
+409 (Conflict)               Conflict with the current state of the resource
 ===========================  ==============================