Revision 1d5c57d3 docs/source/devguide.rst

b/docs/source/devguide.rst
25 25
=========================  ================================
26 26
Revision                   Description
27 27
=========================  ================================
28
0.5 (July 12, 2011)        Object update from another object's data.
28
0.5 (July 14, 2011)        Object update from another object's data.
29 29
\                          Support object truncate.
30
\                          Create object using a standard HTML form.
30 31
0.4 (July 01, 2011)        Object permissions and account groups.
31 32
\                          Control versioning behavior and container quotas with container policy directives.
32 33
\                          Support updating/deleting individual metadata with ``POST``.
......
34 35
0.3 (June 14, 2011)        Large object support with ``X-Object-Manifest``.
35 36
\                          Allow for publicly available objects via ``https://hostname/public``.
36 37
\                          Support time-variant account/container listings. 
37
\                          Add source version when duplicating with PUT/COPY.
38
\                          Request version in object HEAD/GET requests (list versions with GET).
38
\                          Add source version when duplicating with ``PUT``/``COPY``.
39
\                          Request version in object ``HEAD``/``GET`` requests (list versions with ``GET``).
39 40
0.2 (May 31, 2011)         Add object meta listing and filtering in containers.
40 41
\                          Include underlying storage characteristics in container meta.
41
\                          Support for partial object updates through POST.
42
\                          Expose object hashmaps through GET.
43
\                          Support for multi-range object GET requests.
42
\                          Support for partial object updates through ``POST``.
43
\                          Expose object hashmaps through ``GET``.
44
\                          Support for multi-range object ``GET`` requests.
44 45
0.1 (May 17, 2011)         Initial release. Based on OpenStack Object Storage Developer Guide API v1 (Apr. 15, 2011).
45 46
=========================  ================================
46 47

  
......
594 595
format                  Optional extended request type (can be ``json``) to create the object by suppling its hashmap instead
595 596
======================  ===================================
596 597

  
597
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. 
598
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. 
598 599

  
599 600
Hashmaps expose the underlying storage format of the object.
600 601

  
......
725 726
416 (Range Not Satisfiable)  The supplied range is invalid
726 727
===========================  ==============================
727 728

  
729
The ``POST`` method can also be used for creating an object via a standard HTML form. If the request ``Content-Type`` is ``multipart/form-data``, none of the above headers will be processed. The form should have exactly two fields, as in the following example. ::
730

  
731
  <form method="post" action="https://pithos.dev.grnet.gr/v1/user/folder/EXAMPLE.txt" enctype="multipart/form-data">
732
    <input type="hidden" name="X-Auth-Token" value="0000">
733
    <input type="file" name="X-Object-Data">
734
    <input type="submit">
735
  </form>
736

  
737
This will create/override the object with the given name, as if using ``PUT``. The ``Content-Type`` of the object will be set to the value of the corresponding header sent in the part of the request containing the data. Metadata, sharing and other object attributes can not be set this way.
738

  
739
==========================  ===============================
740
Reply Header Name           Value
741
==========================  ===============================
742
ETag                        The MD5 hash of the object
743
==========================  ===============================
744

  
745
|
746

  
747
===========================  ==============================
748
Return Code                  Description
749
===========================  ==============================
750
201 (Created)                The object has been created
751
===========================  ==============================
752

  
728 753

  
729 754
DELETE
730 755
""""""
......
772 797
* At all levels, a ``GET`` request may use ``If-Modified-Since`` and ``If-Unmodified-Since`` headers.
773 798
* Container/object lists include all associated metadata if the reply is of type json/xml. Some names are kept to their OOS API equivalents for compatibility. 
774 799
* Object metadata allowed, in addition to ``X-Object-Meta-*``: ``Content-Encoding``, ``Content-Disposition``, ``X-Object-Manifest``. These are all replaced with every update operation, except if using the ``update`` parameter (in which case individual keys can also be deleted). Deleting meta by providing empty values also works when copying/moving an object.
775
* Multi-range object GET support as outlined in RFC2616.
776
* Object hashmap retrieval through GET and the ``format`` parameter.
777
* Partial object updates through POST, using the ``Content-Length``, ``Content-Type``, ``Content-Range`` and ``Transfer-Encoding`` headers. Use another object's data to update with ``X-Source-Object`` and ``X-Source-Version``. Truncate with ``X-Object-Bytes``.
800
* Multi-range object ``GET`` support as outlined in RFC2616.
801
* Object hashmap retrieval through ``GET`` and the ``format`` parameter.
802
* Object create via hashmap through ``PUT`` and the ``format`` parameter.
803
* Object create using ``POST`` to support standard HTML forms.
804
* Partial object updates through ``POST``, using the ``Content-Length``, ``Content-Type``, ``Content-Range`` and ``Transfer-Encoding`` headers. Use another object's data to update with ``X-Source-Object`` and ``X-Source-Version``. Truncate with ``X-Object-Bytes``.
778 805
* Object ``MOVE`` support.
779 806
* Time-variant account/container listings via the ``until`` parameter.
780
* Object versions - parameter ``version`` in HEAD/GET (list versions with GET), ``X-Object-Version-*`` meta in replies, ``X-Source-Version`` in PUT/COPY.
807
* Object versions - parameter ``version`` in ``HEAD``/``GET`` (list versions with ``GET``), ``X-Object-Version-*`` meta in replies, ``X-Source-Version`` in ``PUT``/``COPY``.
781 808
* Sharing/publishing with ``X-Object-Sharing``, ``X-Object-Public`` at the object level. Permissions may include groups defined with ``X-Account-Group-*`` at the account level. These apply to the object - not its versions.
782 809
* Support for prefix-based inheritance when enforcing permissions. Parent object carrying the authorization directives is reported in ``X-Object-Shared-By``.
783 810
* Large object support with ``X-Object-Manifest``.

Also available in: Unified diff