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