couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kxe...@apache.org
Subject [12/14] Documentation was moved to couchdb-documentation repository
Date Thu, 16 Oct 2014 09:09:24 GMT
http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/ddoc/common.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/ddoc/common.rst b/share/doc/src/api/ddoc/common.rst
deleted file mode 100644
index 9f76e3a..0000000
--- a/share/doc/src/api/ddoc/common.rst
+++ /dev/null
@@ -1,226 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _api/ddoc:
-
-``/db/_design/design-doc``
-==========================
-
-.. http:head:: /{db}/_design/{ddoc}
-  :synopsis: Returns bare information in the HTTP Headers for the design document
-
-  Returns the HTTP Headers containing a minimal amount of information
-  about the specified design document.
-
-  .. seealso::
-
-    :head:`/{db}/{docid}`
-
-
-.. http:get:: /{db}/_design/{ddoc}
-  :synopsis: Returns the design document
-
-  Returns the contents of the design document specified with the name of the design 
-  document and from the specified database from the URL. Unless you request a specific
-  revision, the latest revision of the document will always be returned.
-
-  .. seealso::
-
-    :get:`/{db}/{docid}`
-
-
-.. http:put:: /{db}/_design/{ddoc}
-  :synopsis: Creates a new design document or new version of an existing one
-
-  The :method:`PUT` method creates a new named design document, or creates
-  a new revision of the existing design document.
-
-  The design documents have some agreement upon their fields and structure.
-  Currently it is the following:
-
-  * **language** (*string*): Defines :ref:`Query Server <query-server>`
-    :config:section:`key <query_servers>` to process design document functions
-  * **options** (*object*): View's default options
-  * **filters** (*object*): :ref:`Filter functions <filterfun>` definition
-  * **lists** (*object*): :ref:`List functions <listfun>` definition
-  * **rewrites** (*array*): Rewrite rules definition
-  * **shows** (*object*): :ref:`Show functions <showfun>` definition
-  * **updates** (*object*): :ref:`Update functions <updatefun>` definition
-  * **validate_doc_update** (*string*): :ref:`Validate document update <vdufun>`
-    function source
-  * **views** (*object*): :ref:`View functions <viewfun>` definition.
-
-  Note, that for ``filters``, ``lists``, ``shows`` and ``updates`` fields
-  objects are mapping of function name to string function source code.
-  For ``views`` mapping is the same except that values are objects with ``map``
-  and ``reduce`` (optional) keys which also contains functions source code.
-
-  .. seealso::
-
-    :put:`/{db}/{docid}`
-
-
-.. http:delete:: /{db}/_design/{ddoc}
-  :synopsis: Deletes the design document
-
-  Deletes the specified document from the database. You must supply the
-  current (latest) revision, either by using the ``rev`` parameter to
-  specify the revision.
-
-  .. seealso::
-
-    :delete:`/{db}/{docid}`
-
-.. http:copy:: /{db}/_design/{ddoc}
-  :synopsis: Copies the design document
-
-  The :method:`COPY` (which is non-standard HTTP) copies an existing
-  design document to a new or existing one.
-
-  .. note::
-     Copying a design document does automatically reconstruct the view
-     indexes. These will be recreated, as with other views, the first
-     time the new view is accessed.
-
-  .. seealso::
-
-    :copy:`/{db}/{docid}`
-
-
-.. _api/ddoc/attachment:
-
-``/db/_design/design-doc/attachment``
-=====================================
-
-.. http:head:: /{db}/_design/{ddoc}/{attname}
-  :synopsis: Returns bare information in the HTTP Headers for the attachment
-
-  Returns the HTTP headers containing a minimal amount of information
-  about the specified attachment.
-
-  .. seealso::
-
-    :head:`/{db}/{docid}/{attname}`
-
-.. http:get:: /{db}/_design/{ddoc}/{attname}
-  :synopsis: Gets the attachment of a design document
-
-  Returns the file attachment associated with the design document.
-  The raw data of the associated attachment is returned (just as if you were
-  accessing a static file.
-
-  .. seealso::
-
-    :get:`/{db}/{docid}/{attname}`
-
-.. http:put:: /{db}/_design/{ddoc}/{attname}
-  :synopsis: Adds an attachment of a design document
-
-  Uploads the supplied content as an attachment to the specified design
-  document. The attachment name provided must be a URL encoded string.
-
-  .. seealso::
-
-    :put:`/{db}/{docid}/{attname}`
-
-.. http:delete:: /{db}/_design/{ddoc}/{attname}
-  :synopsis: Deletes an attachment of a design document
-
-  Deletes the attachment of the specified design document.
-
-  .. seealso::
-
-    :delete:`/{db}/{docid}/{attname}`
-
-
-.. _api/ddoc/info:
-
-``/db/_design/design-doc/_info``
-================================
-
-.. http:get:: /{db}/_design/{ddoc}/_info
-  :synopsis: Returns view index information for the specified design document
-
-  Obtains information about the specified design document, including the index,
-  index size and current status of the design document and associated
-  index information.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :<header Accept: - :mimetype:`application/json`
-                   - :mimetype:`text/plain`
-  :>header Content-Type: - :mimetype:`application/json`
-                         - :mimetype:`text/plain; charset=utf-8`
-  :>json string name: Design document name
-  :>json object view_index: :ref:`api/ddoc/view_index_info`
-  :code 200: Request completed successfully
-
-  **Request**:
-
-  .. code-block:: http
-
-    GET /recipes/_design/recipe/_info HTTP/1.1
-    Accept: application/json
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Cache-Control: must-revalidate
-    Content-Length: 263
-    Content-Type: application/json
-    Date: Sat, 17 Aug 2013 12:54:17 GMT
-    Server: CouchDB (Erlang/OTP)
-
-    {
-        "name": "recipe",
-        "view_index": {
-            "compact_running": false,
-            "data_size": 926691,
-            "disk_size": 1982704,
-            "language": "python",
-            "purge_seq": 0,
-            "signature": "a59a1bb13fdf8a8a584bc477919c97ac",
-            "update_seq": 12397,
-            "updater_running": false,
-            "waiting_clients": 0,
-            "waiting_commit": false
-        }
-    }
-
-
-.. _api/ddoc/view_index_info:
-
-View Index Information
-----------------------
-
-The response from :get:`/{db}/_design/{ddoc}/_info` contains
-``view_index`` (*object*) field with the next structure:
-
-* **compact_running** (*boolean*):  Indicates whether a compaction routine
-  is currently running on the view
-* **data_size** (*number*): Actual size in bytes of the view
-* **disk_size** (*number*): Size in bytes of the view as stored on disk
-* **language** (*string*): Language for the defined views
-* **purge_seq** (*number*): The purge sequence that has been processed
-* **signature** (*string*): MD5 signature of the views for the design document
-* **update_seq** (*number*): The update sequence of the corresponding database
-  that has been indexed
-* **updater_running** (*boolean*): Indicates if the view is currently
-  being updated
-* **waiting_clients** (*number*): Number of clients waiting on views from
-  this design document
-* **waiting_commit** (*boolean*): Indicates if there are outstanding commits
-  to the underlying database that need to processed

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/ddoc/index.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/ddoc/index.rst b/share/doc/src/api/ddoc/index.rst
deleted file mode 100644
index 20e6740..0000000
--- a/share/doc/src/api/ddoc/index.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _api/design-docs:
-
-================
-Design Documents
-================
-
-In CouchDB, design documents provide the main interface for building a
-CouchDB application. The design document defines the views used to
-extract information from CouchDB through one or more views. Design
-documents are created within your CouchDB instance in the same way as
-you create database documents, but the content and definition of the
-documents is different. Design Documents are named using an ID defined
-with the design document URL path, and this URL can then be used to
-access the database contents.
-
-Views and lists operate together to provide automated (and formatted)
-output from your database.
-
-.. toctree::
-
-   common
-   views
-   render
-   rewrites

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/ddoc/render.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/ddoc/render.rst b/share/doc/src/api/ddoc/render.rst
deleted file mode 100644
index 84c25c2..0000000
--- a/share/doc/src/api/ddoc/render.rst
+++ /dev/null
@@ -1,388 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _api/ddoc/show:
-
-``/db/_design/design-doc/_show/show-name``
-==========================================
-
-.. http:get:: /{db}/_design/{ddoc}/_show/{func}
-  :synopsis: Executes a show function against null document
-
-.. http:post:: /{db}/_design/{ddoc}/_show/{func}
-  :synopsis: Same as GET method for the related endpoint
-
-  Applies :ref:`show function <showfun>` for `null` document.
-
-  The request and response parameters are depended upon function implementation.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param func: Show function name
-  :>header ETag: Response signature
-  :query string format: Format of the returned response.
-    Used by :js:func:`provides` function
-  :code 200: Request completed successfully
-  :code 500: Query server error
-
-  **Function**:
-
-  .. code-block:: javascript
-
-    function(doc, req) {
-      if (!doc) {
-        return {body: "no doc"}
-      } else {
-        return {body: doc.description}
-      }
-    }
-
-  **Request**:
-
-  .. code-block:: http
-
-    GET /recipes/_design/recipe/_show/description HTTP/1.1
-    Accept: application/json
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Content-Length: 6
-    Content-Type: text/html; charset=utf-8
-    Date: Wed, 21 Aug 2013 12:34:07 GMT
-    Etag: "7Z2TO7FPEMZ0F4GH0RJCRIOAU"
-    Server: CouchDB (Erlang/OTP)
-    Vary: Accept
-
-    no doc
-
-
-.. _api/ddoc/show/id:
-
-``/db/_design/design-doc/_show/show-name/doc-id``
-=================================================
-
-.. http:get:: /{db}/_design/{ddoc}/_show/{func}/{docid}
-  :synopsis: Executes a show function against the specified document
-.. http:post:: /{db}/_design/{ddoc}/_show/{func}/{docid}
-  :synopsis: Same as GET method for the related endpoint
-
-  Applies :ref:`show function <showfun>` for the specified document.
-
-  The request and response parameters are depended upon function implementation.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param func: Show function name
-  :param docid: Document ID
-  :>header ETag: Response signature
-  :query string format: Format of the returned response.
-    Used by :js:func:`provides` function
-  :code 200: Request completed successfully
-  :code 500: Query server error
-
-  **Function**:
-
-  .. code-block:: javascript
-
-    function(doc, req) {
-      if (!doc) {
-        return {body: "no doc"}
-      } else {
-        return {body: doc.description}
-      }
-    }
-
-  **Request**:
-
-  .. code-block:: http
-
-    GET /recipes/_design/recipe/_show/description/SpaghettiWithMeatballs HTTP/1.1
-    Accept: application/json
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Content-Length: 88
-    Content-Type: text/html; charset=utf-8
-    Date: Wed, 21 Aug 2013 12:38:08 GMT
-    Etag: "8IEBO8103EI98HDZL5Z4I1T0C"
-    Server: CouchDB (Erlang/OTP)
-    Vary: Accept
-
-    An Italian-American dish that usually consists of spaghetti, tomato sauce and meatballs.
-
-
-.. _api/ddoc/list:
-
-``/db/_design/design-doc/_list/list-name/view-name``
-====================================================
-
-.. http:get:: /{db}/_design/{ddoc}/_list/{func}/{view}
-  :synopsis: Executes a list function against the view from the same design document
-.. http:post:: /{db}/_design/{ddoc}/_list/{func}/{view}
-  :synopsis: Same as GET method for the related endpoint
-
-  Applies :ref:`list function <listfun>` for the :ref:`view function <viewfun>`
-  from the same design document.
-
-  The request and response parameters are depended upon function implementation.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param func: List function name
-  :param view: View function name
-  :>header ETag: Response signature
-  :>header Transfer-Encoding: ``chunked``
-  :query string format: Format of the returned response.
-    Used by :js:func:`provides` function
-  :code 200: Request completed successfully
-  :code 500: Query server error
-
-  **Function**:
-
-  .. code-block:: javascript
-
-    function(head, req) {
-      var row = getRow();
-      if (!row){
-        return 'no ingredients'
-      }
-      send(row.key);
-      while(row=getRow()){
-        send(', ' + row.key);
-      }
-    }
-
-  **Request**:
-
-  .. code-block:: http
-
-    GET /recipes/_design/recipe/_list/ingredients/by_name HTTP/1.1
-    Accept: text/plain
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Content-Type: text/plain; charset=utf-8
-    Date: Wed, 21 Aug 2013 12:49:15 GMT
-    Etag: "D52L2M1TKQYDD1Y8MEYJR8C84"
-    Server: CouchDB (Erlang/OTP)
-    Transfer-Encoding: chunked
-    Vary: Accept
-
-    meatballs, spaghetti, tomato sauce
-
-
-.. _api/ddoc/list/ddoc:
-
-``/db/_design/design-doc/_list/list-name/other-ddoc/view-name``
-===============================================================
-
-.. http:get:: /{db}/_design/{ddoc}/_list/{func}/{other-ddoc}/{view}
-  :synopsis: Executes a list function against the view from other design document
-.. http:post:: /{db}/_design/{ddoc}/_list/{func}/{other-ddoc}/{view}
-  :synopsis: Same as GET method for the related endpoint
-
-  Applies :ref:`list function <listfun>` for the :ref:`view function <viewfun>`
-  from the other design document.
-
-  The request and response parameters are depended upon function implementation.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param func: List function name
-  :param other-ddoc: Other design document name that holds view function
-  :param view: View function name
-  :>header ETag: Response signature
-  :>header Transfer-Encoding: ``chunked``
-  :query string format: Format of the returned response.
-    Used by :js:func:`provides` function
-  :code 200: Request completed successfully
-  :code 500: Query server error
-
-  **Function**:
-
-  .. code-block:: javascript
-
-    function(head, req) {
-      var row = getRow();
-      if (!row){
-        return 'no ingredients'
-      }
-      send(row.key);
-      while(row=getRow()){
-        send(', ' + row.key);
-      }
-    }
-
-  **Request**:
-
-  .. code-block:: http
-
-    GET /recipes/_design/ingredient/_list/ingredients/recipe/by_ingredient?key="spaghetti" HTTP/1.1
-    Accept: text/plain
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Content-Type: text/plain; charset=utf-8
-    Date: Wed, 21 Aug 2013 12:49:15 GMT
-    Etag: "5L0975X493R0FB5Z3043POZHD"
-    Server: CouchDB (Erlang/OTP)
-    Transfer-Encoding: chunked
-    Vary: Accept
-
-    spaghetti
-
-
-.. _api/ddoc/update:
-
-``/db/_design/design-doc/_update/update-name``
-==============================================
-
-.. http:post:: /{db}/_design/{ddoc}/_update/{func}
-  :synopsis: Executes an update function against the null document
-
-  Executes :ref:`update function <updatefun>` on server side for ``null``
-  document.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param func: Update function name
-  :>header X-Couch-Id: Created/updated document's ID
-  :>header X-Couch-Update-NewRev: Created/updated document's revision
-  :code 200: No document was created or updated
-  :code 201: Document was created or updated
-  :code 500: Query server error
-
-  **Function**:
-
-  .. code-block:: javascript
-
-    function(doc, req) {
-      if (!doc){
-        return [null, {'code': 400,
-                       'json': {'error': 'missed',
-                                'reason': 'no document to update'}}]
-      } else {
-        doc.ingredients.push(req.body);
-        return [doc, {'json': {'status': 'ok'}}];
-      }
-    }
-
-  **Request**:
-
-  .. code-block:: http
-
-    POST /recipes/_design/recipe/_update/ingredients HTTP/1.1
-    Accept: application/json
-    Content-Length: 10
-    Content-Type: application/json
-    Host: localhost:5984
-
-    something
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 404 Object Not Found
-    Cache-Control: must-revalidate
-    Content-Length: 52
-    Content-Type: application/json
-    Date: Wed, 21 Aug 2013 14:00:58 GMT
-    Server: CouchDB (Erlang/OTP)
-
-    {
-        "error": "missed",
-        "reason": "no document to update"
-    }
-
-
-.. _api/ddoc/update/id:
-
-``/db/_design/design-doc/_update/update-name/doc-id``
-=====================================================
-
-.. http:put:: /{db}/_design/{ddoc}/_update/{func}/{docid}
-  :synopsis: Executes an update function against the specified document
-
-  Executes :ref:`update function <updatefun>` on server side for the specified
-  document.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param func: Update function name
-  :param docid: Document ID
-  :>header X-Couch-Id: Created/updated document's ID
-  :>header X-Couch-Update-NewRev: Created/updated document's revision
-  :code 200: No document was created or updated
-  :code 201: Document was created or updated
-  :code 500: Query server error
-
-  **Function**:
-
-  .. code-block:: javascript
-
-    function(doc, req) {
-      if (!doc){
-        return [null, {'code': 400,
-                       'json': {'error': 'missed',
-                                'reason': 'no document to update'}}]
-      } else {
-        doc.ingredients.push(req.body);
-        return [doc, {'json': {'status': 'ok'}}];
-      }
-    }
-
-  **Request**:
-
-  .. code-block:: http
-
-    POST /recipes/_design/recipe/_update/ingredients/SpaghettiWithMeatballs HTTP/1.1
-    Accept: application/json
-    Content-Length: 5
-    Content-Type: application/json
-    Host: localhost:5984
-
-    love
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 201 Created
-    Cache-Control: must-revalidate
-    Content-Length: 16
-    Content-Type: application/json
-    Date: Wed, 21 Aug 2013 14:11:34 GMT
-    Server: CouchDB (Erlang/OTP)
-    X-Couch-Id: SpaghettiWithMeatballs
-    X-Couch-Update-NewRev: 12-a5e099df5720988dae90c8b664496baf
-
-    {
-        "status": "ok"
-    }

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/ddoc/rewrites.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/ddoc/rewrites.rst b/share/doc/src/api/ddoc/rewrites.rst
deleted file mode 100644
index 90abddd..0000000
--- a/share/doc/src/api/ddoc/rewrites.rst
+++ /dev/null
@@ -1,90 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _api/ddoc/rewrite:
-
-``/db/_design/design-doc/_rewrite/path``
-========================================
-
-.. http:any:: /{db}/_design/{ddoc}/_rewrite/{path}
-  :synopsis: Rewrites HTTP request for the specified path by using stored routing rules
-
-  Rewrites the specified path by rules defined in the specified design document.
-
-  The rewrite rules are defined in *array* field of the design document called
-  ``rewrites``. Each rule is an *object* with next structure:
-
-  - **from** (*string*): The path rule used to bind current uri to the rule.
-    It use pattern matching for that
-  - **to** (*string*): Rule to rewrite an url. It can contain variables
-    depending on  binding variables discovered during pattern matching and
-    query args (url args and from the query member)
-  - **method** (*string*): HTTP request method to bind the request method to
-    the rule. Default is ``"*"``
-  - **query** (*object*): Query args you want to define they can contain
-    dynamic variable by binding the key
-
-  The ``to``and ``from`` paths may contains string patterns with leading ``:``
-  or ``*`` characters.
-
-  For example: ``/somepath/:var/*``
-
-  - This path is converted in Erlang list by splitting ``/``
-  - Each ``var`` are converted in atom
-  - ``""`` are converted to ``''`` atom
-  - The pattern matching is done by splitting ``/`` in request url in a list of
-    token
-  - A string pattern will match equal token
-  - The star atom (``'*'`` in single quotes) will match any number of tokens,
-    but may only be present as the last `pathterm` in a `pathspec`
-  - If all tokens are matched and all `pathterms` are used, then the `pathspec`
-    matches
-
-  The pattern matching is done by first matching the HTTP request method to a
-  rule. ``method`` is equal to ``"*"`` by default, and will match any HTTP
-  method. It will then try to match the path to one rule. If no rule matches,
-  then a :statuscode:`404` response returned.
-
-  Once a rule is found we rewrite the request url using the ``to`` and ``query``
-  fields. The identified token are matched to the rule and will replace var.
-  If ``'*'`` is found in the rule it will contain the remaining part if it
-  exists.
-
-  Examples:
-
-  +--------------------------------------+----------+------------------+-------+
-  |               Rule                   |    Url   |  Rewrite to      | Tokens|
-  +======================================+==========+==================+=======+
-  | {"from": "/a", "to": "/some"}        | /a       | /some            |       |
-  +--------------------------------------+----------+------------------+-------+
-  | {"from": "/a/\*", "to": "/some/\*}   | /a/b/c   | /some/b/c        |       |
-  +--------------------------------------+----------+------------------+-------+
-  | {"from": "/a/b", "to": "/some"}      | /a/b?k=v | /some?k=v        | k=v   |
-  +--------------------------------------+----------+------------------+-------+
-  | {"from": "/a/b", "to": "/some/:var"} | /a/b     | /some/b?var=b    | var=b |
-  +--------------------------------------+----------+------------------+-------+
-  | {"from": "/a/:foo/",                 | /a/b/c   | /some/b/c?foo=b  | foo=b |
-  | "to": "/some/:foo/"}                 |          |                  |       |
-  +--------------------------------------+----------+------------------+-------+
-  | {"from": "/a/:foo", "to": "/some",   | /a/b     | /some/?k=b&foo=b | foo=b |
-  | "query": { "k": ":foo" }}            |          |                  |       |
-  +--------------------------------------+----------+------------------+-------+
-  | {"from": "/a", "to": "/some/:foo"}   | /a?foo=b | /some/?b&foo=b   | foo=b |
-  +--------------------------------------+----------+------------------+-------+
-
-  Request method, header, query parameters, request payload and response body
-  are depended on endpoint to which url will be rewritten.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param path: URL path to rewrite

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/ddoc/views.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/ddoc/views.rst b/share/doc/src/api/ddoc/views.rst
deleted file mode 100644
index c1907ce..0000000
--- a/share/doc/src/api/ddoc/views.rst
+++ /dev/null
@@ -1,792 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _api/ddoc/view:
-
-``/db/_design/design-doc/_view/view-name``
-==========================================
-
-.. http:get:: /{db}/_design/{ddoc}/_view/{view}
-  :synopsis: Returns results for the specified stored view
-
-  Executes the specified view function from the specified design document.
-
-  :param db: Database name
-  :param ddoc: Design document name
-  :param view: View function name
-
-  :<header Accept: - :mimetype:`application/json`
-                   - :mimetype:`text/plain`
-
-  :query boolean conflicts: Includes `conflicts` information in response.
-    Ignored if `include_docs` isn't ``true``. Default is ``false``
-  :query boolean descending: Return the documents in descending by key order.
-    Default is ``false``
-  :query string endkey: Stop returning records when the specified key is
-    reached. *Optional*
-  :query string end_key: Alias for `endkey` param
-  :query string endkey_docid: Stop returning records when the specified
-    document ID is reached. *Optional*
-  :query string end_key_doc_id: Alias for `endkey_docid` param
-  :query boolean group: Group the results using the reduce function to a group
-    or single row. Default is ``false``
-  :query number group_level: Specify the group level to be used. *Optional*
-  :query boolean include_docs: Include the associated document with each row.
-    Default is ``false``.
-  :query boolean attachments: Include the Base64-encoded content of
-    :ref:`attachments <api/doc/attachments>` in the documents that are included
-    if `include_docs` is ``true``. Ignored if `include_docs` isn't ``true``.
-    Default is ``false``.
-  :query boolean att_encoding_info: Include encoding information in attachment
-    stubs if `include_docs` is ``true`` and the particular attachment is
-    compressed. Ignored if `include_docs` isn't ``true``. Default is ``false``.
-  :query boolean inclusive_end: Specifies whether the specified end key should
-    be included in the result. Default is ``true``
-  :query string key: Return only documents that match the specified key.
-    *Optional*
-  :query number limit: Limit the number of the returned documents to the
-    specified number. *Optional*
-  :query boolean reduce: Use the reduction function. Default is ``true``
-  :query number skip: Skip this number of records before starting to return
-    the results. Default is ``0``
-  :query string stale: Allow the results from a stale view to be used.
-    Supported values: ``ok`` and ``update_after``. *Optional*
-  :query string startkey: Return records starting with the specified key.
-    *Optional*
-  :query string start_key: Alias for `startkey` param
-  :query string startkey_docid: Return records starting with the specified
-    document ID. *Optional*
-  :query string start_key_doc_id: Alias for `startkey_docid` param
-  :query boolean update_seq: Response includes an ``update_seq`` value
-    indicating which sequence id of the database the view reflects.
-    Default is ``false``
-
-  :>header Content-Type: - :mimetype:`application/json`
-                         - :mimetype:`text/plain; charset=utf-8`
-  :>header ETag: Response signature
-  :>header Transfer-Encoding: ``chunked``
-
-  :>json number offset: Offset where the document list started
-  :>json array rows: Array of view row objects. By default the information
-    returned contains only the document ID and revision
-  :>json number total_rows: Number of documents in the database/view
-  :>json number update_seq: Current update sequence for the database
-
-  :code 200: Request completed successfully
-  :code 400: Invalid request
-  :code 401: Read permission required
-  :code 404: Specified database, design document or view is missed
-  :code 500: View function execution error
-
-  **Request**:
-
-  .. code-block:: http
-
-    GET /recipes/_design/ingredients/_view/by_name HTTP/1.1
-    Accept: application/json
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Cache-Control: must-revalidate
-    Content-Type: application/json
-    Date: Wed, 21 Aug 2013 09:12:06 GMT
-    ETag: "2FOLSBSW4O6WB798XU4AQYA9B"
-    Server: CouchDB (Erlang/OTP)
-    Transfer-Encoding: chunked
-
-    {
-        "offset": 0,
-        "rows": [
-            {
-                "id": "SpaghettiWithMeatballs",
-                "key": "meatballs",
-                "value": 1
-            },
-            {
-                "id": "SpaghettiWithMeatballs",
-                "key": "spaghetti",
-                "value": 1
-            },
-            {
-                "id": "SpaghettiWithMeatballs",
-                "key": "tomato sauce",
-                "value": 1
-            }
-        ],
-        "total_rows": 3
-    }
-
-.. versionchanged:: 1.6.0 added ``attachments`` and ``att_encoding_info``
-   parameters
-
-.. warning::
-   Using the ``attachments`` parameter to include attachments in view results
-   is not recommended for large attachment sizes. Also note that the
-   Base64-encoding that is used leads to a 33% overhead (i.e. one third) in
-   transfer size for attachments.
-
-
-.. http:post:: /{db}/_design/{ddoc}/_view/{view}
-  :synopsis: Returns certain rows for the specified stored view
-
-  Executes the specified view function from the specified design document.
-  Unlike :get:`/{db}/_design/{ddoc}/_view/{view}` for accessing views, the
-  :method:`POST` method supports the specification
-  of explicit keys to be retrieved from the view results. The remainder of the
-  :method:`POST` view functionality is identical to the
-  :get:`/{db}/_design/{ddoc}/_view/{view}` API.
-
-  **Request**:
-
-  .. code-block:: http
-
-    POST /recipes/_design/ingredients/_view/by_name HTTP/1.1
-    Accept: application/json
-    Content-Length: 37
-    Host: localhost:5984
-
-    {
-        "keys": [
-            "meatballs",
-            "spaghetti"
-        ]
-    }
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Cache-Control: must-revalidate
-    Content-Type: application/json
-    Date: Wed, 21 Aug 2013 09:14:13 GMT
-    ETag: "6R5NM8E872JIJF796VF7WI3FZ"
-    Server: CouchDB (Erlang/OTP)
-    Transfer-Encoding: chunked
-
-    {
-        "offset": 0,
-        "rows": [
-            {
-                "id": "SpaghettiWithMeatballs",
-                "key": "meatballs",
-                "value": 1
-            },
-            {
-                "id": "SpaghettiWithMeatballs",
-                "key": "spaghetti",
-                "value": 1
-            }
-        ],
-        "total_rows": 3
-    }
-
-
-.. _api/ddoc/view/options:
-
-View Options
-------------
-
-There are two view indexing options that can be defined in a design document
-as boolean properties of an ``options`` object. Unlike the others querying
-options, these aren't URL parameters because they take effect when the view
-index is generated, not when it's accessed:
-
-- **local_seq** (*boolean*): Makes documents' local sequence numbers available
-  to map functions (as a ``_local_seq`` document property)
-- **include_design** (*boolean*): Allows map functions to be called on design
-  documents as well as regular documents
-
-.. _api/ddoc/view/indexing:
-
-Querying Views and Indexes
---------------------------
-
-The definition of a view within a design document also creates an index
-based on the key information defined within each view. The production
-and use of the index significantly increases the speed of access and
-searching or selecting documents from the view.
-
-However, the index is not updated when new documents are added or
-modified in the database. Instead, the index is generated or updated,
-either when the view is first accessed, or when the view is accessed
-after a document has been updated. In each case, the index is updated
-before the view query is executed against the database.
-
-View indexes are updated incrementally in the following situations:
-
--  A new document has been added to the database.
-
--  A document has been deleted from the database.
-
--  A document in the database has been updated.
-
-View indexes are rebuilt entirely when the view definition changes. To
-achieve this, a 'fingerprint' of the view definition is created when the
-design document is updated. If the fingerprint changes, then the view
-indexes are entirely rebuilt. This ensures that changes to the view
-definitions are reflected in the view indexes.
-
-.. note::
-   View index rebuilds occur when one view from the same the view group
-   (i.e. all the views defined within a single a design document) has
-   been determined as needing a rebuild. For example, if if you have a
-   design document with different views, and you update the database,
-   all three view indexes within the design document will be updated.
-
-Because the view is updated when it has been queried, it can result in a
-delay in returned information when the view is accessed, especially if
-there are a large number of documents in the database and the view index
-does not exist. There are a number of ways to mitigate, but not
-completely eliminate, these issues. These include:
-
--  Create the view definition (and associated design documents) on your
-   database before allowing insertion or updates to the documents. If
-   this is allowed while the view is being accessed, the index can be
-   updated incrementally.
-
--  Manually force a view request from the database. You can do this
-   either before users are allowed to use the view, or you can access
-   the view manually after documents are added or updated.
-
--  Use the :ref:`changes feed <api/db/changes>` to monitor for changes to the
-   database and then access the view to force the corresponding view
-   index to be updated.
-
--  Use a monitor with the :ref:`update notification <update-notifications>`
-   section of the CouchDB configuration file to monitor for changes to your
-   database, and trigger a view query to force the view to be updated.
-
-None of these can completely eliminate the need for the indexes to be
-rebuilt or updated when the view is accessed, but they may lessen the
-effects on end-users of the index update affecting the user experience.
-
-Another alternative is to allow users to access a 'stale' version of the
-view index, rather than forcing the index to be updated and displaying
-the updated results. Using a stale view may not return the latest
-information, but will return the results of the view query using an
-existing version of the index.
-
-For example, to access the existing stale view ``by_recipe`` in the
-``recipes`` design document:
-
-.. code-block:: text
-
-    http://localhost:5984/recipes/_design/recipes/_view/by_recipe?stale=ok
-
-Accessing a stale view:
-
--  Does not trigger a rebuild of the view indexes, even if there have
-   been changes since the last access.
-
--  Returns the current version of the view index, if a current version
-   exists.
-
--  Returns an empty result set if the given view index does exist.
-
-As an alternative, you use the ``update_after`` value to the ``stale``
-parameter. This causes the view to be returned as a stale view, but for
-the update process to be triggered after the view information has been
-returned to the client.
-
-In addition to using stale views, you can also make use of the
-``update_seq`` query argument. Using this query argument generates the
-view information including the update sequence of the database from
-which the view was generated. The returned value can be compared this to
-the current update sequence exposed in the database information
-(returned by :get:`/{db}`).
-
-
-.. _api/ddoc/view/sorting:
-
-Sorting Returned Rows
----------------------
-
-Each element within the returned array is sorted using native UTF-8
-sorting according to the contents of the key portion of the emitted
-content. The basic order of output is as follows:
-
--  ``null``
-
--  ``false``
-
--  ``true``
-
--  Numbers
-
--  Text (case sensitive, lowercase first)
-
--  Arrays (according to the values of each element, in order)
-
--  Objects (according to the values of keys, in key order)
-
-**Request**:
-
-.. code-block:: http
-
-  GET /db/_design/test/_view/sorting HTTP/1.1
-  Accept: application/json
-  Host: localhost:5984
-
-
-**Response**:
-
-.. code-block:: http
-
-  HTTP/1.1 200 OK
-  Cache-Control: must-revalidate
-  Content-Type: application/json
-  Date: Wed, 21 Aug 2013 10:09:25 GMT
-  ETag: "8LA1LZPQ37B6R9U8BK9BGQH27"
-  Server: CouchDB (Erlang/OTP)
-  Transfer-Encoding: chunked
-
-  {
-      "offset": 0,
-      "rows": [
-          {
-              "id": "dummy-doc",
-              "key": null,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": false,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": true,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 0,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 1,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 10,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 42,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "10",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "hello",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "Hello",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "\u043f\u0440\u0438\u0432\u0435\u0442",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [
-                  1,
-                  2,
-                  3
-              ],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [
-                  2,
-                  3
-              ],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [
-                  3
-              ],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": {},
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": {
-                  "foo": "bar"
-              },
-              "value": null
-          }
-      ],
-      "total_rows": 17
-  }
-
-
-You can reverse the order of the returned view information by using the
-``descending`` query value set to true:
-
-**Request**:
-
-.. code-block:: http
-
-  GET /db/_design/test/_view/sorting?descending=true HTTP/1.1
-  Accept: application/json
-  Host: localhost:5984
-
-
-**Response**:
-
-.. code-block:: http
-
-  HTTP/1.1 200 OK
-  Cache-Control: must-revalidate
-  Content-Type: application/json
-  Date: Wed, 21 Aug 2013 10:09:25 GMT
-  ETag: "Z4N468R15JBT98OM0AMNSR8U"
-  Server: CouchDB (Erlang/OTP)
-  Transfer-Encoding: chunked
-
-  {
-      "offset": 0,
-      "rows": [
-          {
-              "id": "dummy-doc",
-              "key": {
-                  "foo": "bar"
-              },
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": {},
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [
-                  3
-              ],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [
-                  2,
-                  3
-              ],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [
-                  1,
-                  2,
-                  3
-              ],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": [],
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "\u043f\u0440\u0438\u0432\u0435\u0442",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "Hello",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "hello",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": "10",
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 42,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 10,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 1,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": 0,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": true,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": false,
-              "value": null
-          },
-          {
-              "id": "dummy-doc",
-              "key": null,
-              "value": null
-          }
-      ],
-      "total_rows": 17
-  }
-
-
-Sorting order and startkey/endkey
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-The sorting direction is applied before the filtering applied using the
-``startkey`` and ``endkey`` query arguments. For example the following
-query:
-
-.. code-block:: http
-
-    GET http://couchdb:5984/recipes/_design/recipes/_view/by_ingredient?startkey=%22carrots%22&endkey=%22egg%22
-    Accept: application/json
-
-will operate correctly when listing all the matching entries between
-``carrots`` and ``egg``. If the order of output is reversed with the
-``descending`` query argument, the view request will return no entries:
-
-.. code-block:: http
-
-
-  GET /recipes/_design/recipes/_view/by_ingredient?descending=true&startkey=%22carrots%22&endkey=%22egg%22 HTTP/1.1
-  Accept: application/json
-  Host: localhost:5984
-
-  {
-     "total_rows" : 26453,
-     "rows" : [],
-     "offset" : 21882
-  }
-
-The results will be empty because the entries in the view are reversed
-before the key filter is applied, and therefore the ``endkey`` of “egg”
-will be seen before the ``startkey`` of “carrots”, resulting in an empty
-list.
-
-Instead, you should reverse the values supplied to the ``startkey`` and
-``endkey`` parameters to match the descending sorting applied to the
-keys. Changing the previous example to:
-
-.. code-block:: http
-
-  GET /recipes/_design/recipes/_view/by_ingredient?descending=true&startkey=%22egg%22&endkey=%22carrots%22 HTTP/1.1
-  Accept: application/json
-  Host: localhost:5984
-
-
-.. _api/ddoc/view/sorting/raw:
-
-Raw collation
-^^^^^^^^^^^^^
-
-By default CouchDB using `ICU`_ driver for sorting view results. It's possible
-use binary collation instead for faster view builds where Unicode collation is
-not important.
-
-To use raw collation add ``"collation": "raw"`` key-value pair to the design
-documents ``options`` object at the root level. After that, views will be
-regenerated and new order applied.
-
-.. seealso::
-
-   :ref:`views/collation`
-
-.. _ICU: http://site.icu-project.org/
-
-.. _api/ddoc/view/limiting:
-
-Using Limits and Skipping Rows
-------------------------------
-
-By default requestion views result returns all records for it. That's ok when
-they are small, but this may lead to problems when there are billions of them
-since the clients might have to read them all and consume all available memory.
-
-But it's possible to reduce output result rows by specifying ``limit`` query
-parameter. For example, retrieving the list of recipes using the ``by_title``
-view and limited to 5 returns only 5 records, while there are total 2667 records
-in view:
-
-**Request**:
-
-.. code-block:: http
-
-  GET /recipes/_design/recipes/_view/by_title?limit=5 HTTP/1.1
-  Accept: application/json
-  Host: localhost:5984
-
-**Response**:
-
-.. code-block:: http
-
-  HTTP/1.1 200 OK
-  Cache-Control: must-revalidate
-  Content-Type: application/json
-  Date: Wed, 21 Aug 2013 09:14:13 GMT
-  ETag: "9Q6Q2GZKPH8D5F8L7PB6DBSS9"
-  Server: CouchDB (Erlang/OTP)
-  Transfer-Encoding: chunked
-
-  {
-     "offset" : 0,
-     "rows" : [
-        {
-           "id" : "3-tiersalmonspinachandavocadoterrine",
-           "key" : "3-tier salmon, spinach and avocado terrine",
-           "value" : [
-              null,
-              "3-tier salmon, spinach and avocado terrine"
-           ]
-        },
-        {
-           "id" : "Aberffrawcake",
-           "key" : "Aberffraw cake",
-           "value" : [
-              null,
-              "Aberffraw cake"
-           ]
-        },
-        {
-           "id" : "Adukiandorangecasserole-microwave",
-           "key" : "Aduki and orange casserole - microwave",
-           "value" : [
-              null,
-              "Aduki and orange casserole - microwave"
-           ]
-        },
-        {
-           "id" : "Aioli-garlicmayonnaise",
-           "key" : "Aioli - garlic mayonnaise",
-           "value" : [
-              null,
-              "Aioli - garlic mayonnaise"
-           ]
-        },
-        {
-           "id" : "Alabamapeanutchicken",
-           "key" : "Alabama peanut chicken",
-           "value" : [
-              null,
-              "Alabama peanut chicken"
-           ]
-        }
-     ],
-     "total_rows" : 2667
-  }
-
-To omit some records you may use ``skip`` query parameter:
-
-**Request**:
-
-.. code-block:: http
-
-  GET /recipes/_design/recipes/_view/by_title?limit=3&skip=2 HTTP/1.1
-  Accept: application/json
-  Host: localhost:5984
-
-**Response**:
-
-.. code-block:: http
-
-  HTTP/1.1 200 OK
-  Cache-Control: must-revalidate
-  Content-Type: application/json
-  Date: Wed, 21 Aug 2013 09:14:13 GMT
-  ETag: "H3G7YZSNIVRRHO5FXPE16NJHN"
-  Server: CouchDB (Erlang/OTP)
-  Transfer-Encoding: chunked
-
-  {
-     "offset" : 2,
-     "rows" : [
-        {
-           "id" : "Adukiandorangecasserole-microwave",
-           "key" : "Aduki and orange casserole - microwave",
-           "value" : [
-              null,
-              "Aduki and orange casserole - microwave"
-           ]
-        },
-        {
-           "id" : "Aioli-garlicmayonnaise",
-           "key" : "Aioli - garlic mayonnaise",
-           "value" : [
-              null,
-              "Aioli - garlic mayonnaise"
-           ]
-        },
-        {
-           "id" : "Alabamapeanutchicken",
-           "key" : "Alabama peanut chicken",
-           "value" : [
-              null,
-              "Alabama peanut chicken"
-           ]
-        }
-     ],
-     "total_rows" : 2667
-  }
-
-.. warning::
-
-   Using ``limit`` and ``skip`` parameters is not recommended for results
-   pagination. Read :ref:`pagination recipe <views/pagination>` why it's so
-   and how to make it better.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/cdac7299/share/doc/src/api/document/attachments.rst
----------------------------------------------------------------------
diff --git a/share/doc/src/api/document/attachments.rst b/share/doc/src/api/document/attachments.rst
deleted file mode 100644
index f2403aa..0000000
--- a/share/doc/src/api/document/attachments.rst
+++ /dev/null
@@ -1,318 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-
-.. _api/doc/attachment:
-
-``/db/doc/attachment``
-======================
-
-.. http:head:: /{db}/{docid}/{attname}
-  :synopsis: Returns bare information in the HTTP Headers for the attachment
-
-  Returns the HTTP headers containing a minimal amount of information
-  about the specified attachment. The method supports the same query
-  arguments as the :get:`/{db}/{docid}/{attname}` method, but only
-  the header information (including attachment size, encoding and the MD5 hash
-  as an :header:`ETag`), is returned.
-
-  :param db: Database name
-  :param docid: Document ID
-  :param attname: Attachment name
-  :<header If-Match: Document's revision. Alternative to `rev` query parameter
-  :<header If-None-Match: Attachment's base64 encoded MD5 binary digest.
-    *Optional*
-  :query string rev: Document's revision. *Optional*
-  :>header Accept-Ranges: :ref:`Range request aware <api/doc/attachment/range>`.
-    Used for attachments with :mimetype:`application/octet-stream` content type
-  :>header Content-Encoding: Used compression codec. Available if attachment's
-    ``content_type`` is in :config:option:`list of compressiable types
-    <attachments/compressible_types>`
-  :>header Content-Length: Attachment size. If compression codec was used,
-    this value is about compressed size, not actual
-  :>header Content-MD5: Base64 encoded MD5 binary digest
-  :>header ETag: Double quoted base64 encoded MD5 binary digest
-  :code 200: Attachment exists
-  :code 304: Attachment wasn't modified if :header:`ETag` equals specified
-    :header:`If-None-Match` header
-  :code 401: Read privilege required
-  :code 404: Specified database, document or attachment was not found
-
-  **Request**:
-
-  .. code-block:: http
-
-    HEAD /recipes/SpaghettiWithMeatballs/recipe.txt HTTP/1.1
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Accept-Ranges: none
-    Cache-Control: must-revalidate
-    Content-Encoding: gzip
-    Content-Length: 100
-    Content-MD5: vVa/YgiE1+Gh0WfoFJAcSg==
-    Content-Type: text/plain
-    Date: Thu, 15 Aug 2013 12:42:42 GMT
-    ETag: "vVa/YgiE1+Gh0WfoFJAcSg=="
-    Server: CouchDB (Erlang/OTP)
-
-
-.. http:get:: /{db}/{docid}/{attname}
-  :synopsis: Gets the attachment of a document
-
-  Returns the file attachment associated with the document.
-  The raw data of the associated attachment is returned (just as if you were
-  accessing a static file. The returned :header:`Content-Type`
-  will be the same as the content type set when the document attachment
-  was submitted into the database.
-
-  :param db: Database name
-  :param docid: Document ID
-  :param attname: Attachment name
-  :<header If-Match: Document's revision. Alternative to `rev` query parameter
-  :<header If-None-Match: Attachment's base64 encoded MD5 binary digest.
-    *Optional*
-  :query string rev: Document's revision. *Optional*
-  :>header Accept-Ranges: :ref:`Range request aware <api/doc/attachment/range>`.
-    Used for attachments with :mimetype:`application/octet-stream`
-  :>header Content-Encoding: Used compression codec. Available if attachment's
-    ``content_type`` is in :config:option:`list of compressiable types
-    <attachments/compressible_types>`
-  :>header Content-Length: Attachment size. If compression codec is used,
-    this value is about compressed size, not actual
-  :>header Content-MD5: Base64 encoded MD5 binary digest
-  :>header ETag: Double quoted base64 encoded MD5 binary digest
-  :response: Stored content
-  :code 200: Attachment exists
-  :code 304: Attachment wasn't modified if :header:`ETag` equals specified
-    :header:`If-None-Match` header
-  :code 401: Read privilege required
-  :code 404: Specified database, document or attachment was not found
-
-
-.. http:put:: /{db}/{docid}/{attname}
-  :synopsis: Adds an attachment of a document
-
-  Uploads the supplied content as an attachment to the specified document.
-  The attachment name provided must be a URL encoded string. You must also
-  supply either the ``rev`` query argument or the :header:`If-Match`
-  HTTP header for validation, and the HTTP headers (to set the attachment
-  content type).
-
-  If case when uploading an attachment using an existing attachment name,
-  CouchDB will update the corresponding stored content of the database.
-  Since you must supply the revision information to add an attachment to
-  the document, this serves as validation to update the existing attachment.
-
-  .. note::
-     Uploading an attachment updates the corresponding document revision.
-     Revisions are tracked for the parent document, not individual attachments.
-
-  :param db: Database name
-  :param docid: Document ID
-  :param attname: Attachment name
-  :<header Content-Type: Attachment MIME type. *Required*
-  :<header If-Match: Document revision. Alternative to `rev` query parameter
-  :query string rev: Document revision. *Required*
-  :>header Accept-Ranges: :ref:`Range request aware <api/doc/attachment/range>`.
-    Used for attachments with :mimetype:`application/octet-stream`
-  :>header Content-Encoding: Used compression codec. Available if attachment's
-    ``content_type`` is in :config:option:`list of compressiable types
-    <attachments/compressible_types>`
-  :>header Content-Length: Attachment size. If compression codec is used,
-    this value is about compressed size, not actual
-  :>header Content-MD5: Base64 encoded MD5 binary digest
-  :>header ETag: Double quoted base64 encoded MD5 binary digest
-  :>json string id: Document ID
-  :>json boolean ok: Operation status
-  :>json string rev: Revision MVCC token
-  :code 200: Attachment successfully removed
-  :code 202: Request was accepted, but changes are not yet stored on disk
-  :code 400: Invalid request body or parameters
-  :code 401: Write privileges required
-  :code 404: Specified database, document or attachment was not found
-  :code 409: Document's revision wasn't specified or it's not the latest
-
-  **Request**:
-
-  .. code-block:: http
-
-    PUT /recipes/SpaghettiWithMeatballs/recipe.txt HTTP/1.1
-    Accept: application/json
-    Content-Length: 86
-    Content-Type: text/plain
-    Host: localhost:5984
-    If-Match: 1-917fa2381192822767f010b95b45325b
-
-    1. Cook spaghetti
-    2. Cook meatballs
-    3. Mix them
-    4. Add tomato sauce
-    5. ...
-    6. PROFIT!
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 201 Created
-    Cache-Control: must-revalidate
-    Content-Length: 85
-    Content-Type: application/json
-    Date: Thu, 15 Aug 2013 12:38:04 GMT
-    ETag: "2-ce91aed0129be8f9b0f650a2edcfd0a4"
-    Location: http://localhost:5984/recipes/SpaghettiWithMeatballs/recipe.txt
-    Server: CouchDB (Erlang/OTP)
-
-    {
-        "id": "SpaghettiWithMeatballs",
-        "ok": true,
-        "rev": "2-ce91aed0129be8f9b0f650a2edcfd0a4"
-    }
-
-
-.. http:delete:: /{db}/{docid}/{attname}
-  :synopsis: Deletes an attachment of a document
-
-  Deletes the attachment ``attachment`` of the specified ``doc``. You must
-  supply the ``rev`` query parameter or :header:`If-Match` with the current
-  revision to delete the attachment.
-
-  .. note::
-     Deleting an attachment updates the corresponding document revision.
-     Revisions are tracked for the parent document, not individual attachments.
-
-  :param db: Database name
-  :param docid: Document ID
-  :<header Accept: - :mimetype:`application/json`
-                   - :mimetype:`text/plain`
-  :<header If-Match: Document revision. Alternative to `rev` query parameter
-  :<header X-Couch-Full-Commit: Overrides server's
-    :config:option:`commit policy <couchdb/delayed_commits>`. Possible values
-    are: ``false`` and ``true``. *Optional*
-  :query string rev: Document revision. *Required*
-  :query string batch: Store changes in :ref:`batch mode
-    <api/doc/batch-writes>` Possible values: ``ok``. *Optional*
-  :>header Content-Type: - :mimetype:`application/json`
-                         - :mimetype:`text/plain; charset=utf-8`
-  :>header ETag: Double quoted document's new revision
-  :>json string id: Document ID
-  :>json boolean ok: Operation status
-  :>json string rev: Revision MVCC token
-  :code 200: Attachment successfully removed
-  :code 202: Request was accepted, but changes are not yet stored on disk
-  :code 400: Invalid request body or parameters
-  :code 401: Write privileges required
-  :code 404: Specified database, document or attachment was not found
-  :code 409: Document's revision wasn't specified or it's not the latest
-
-  **Request**:
-
-  .. code-block:: http
-
-    DELETE /recipes/SpaghettiWithMeatballs?rev=6-440b2dd39c20413045748b42c6aba6e2 HTTP/1.1
-    Accept: application/json
-    Host: localhost:5984
-
-  Alternatively, instead of ``rev`` query parameter you may use
-  :header:`If-Match` header:
-
-  .. code-block:: http
-
-    DELETE /recipes/SpaghettiWithMeatballs HTTP/1.1
-    Accept: application/json
-    If-Match: 6-440b2dd39c20413045748b42c6aba6e2
-    Host: localhost:5984
-
-  **Response**:
-
-  .. code-block:: http
-
-    HTTP/1.1 200 OK
-    Cache-Control: must-revalidate
-    Content-Length: 85
-    Content-Type: application/json
-    Date: Wed, 14 Aug 2013 12:23:13 GMT
-    ETag: "7-05185cf5fcdf4b6da360af939431d466"
-    Server: CouchDB (Erlang/OTP)
-
-    {
-        "id": "SpaghettiWithMeatballs",
-        "ok": true,
-        "rev": "7-05185cf5fcdf4b6da360af939431d466"
-    }
-
-
-.. _api/doc/attachment/range:
-
-HTTP Range Requests
--------------------
-
-HTTP allows you to specify byte ranges for requests. This allows the
-implementation of resumable downloads and skippable audio and video
-streams alike. This is available for all attachments inside CouchDB.
-
-This is just a real quick run through how this looks under the hood.
-Usually, you will have larger binary files to serve from CouchDB, like
-MP3s and videos, but to make things a little more obvious, I use a text
-file here (Note that I use the :mimetype:`application/octet-stream`
-:header`Content-Type` instead of :mimetype:`text/plain`).
-
-.. code-block:: bash
-
-    shell> cat file.txt
-    My hovercraft is full of eels!
-
-Now let's store this text file as an attachment in CouchDB. First, we
-create a database:
-
-.. code-block:: bash
-
-    shell> curl -X PUT http://127.0.0.1:5984/test
-    {"ok":true}
-
-Then we create a new document and the file attachment in one go:
-
-.. code-block:: bash
-
-    shell> curl -X PUT http://127.0.0.1:5984/test/doc/file.txt \
-                -H "Content-Type: application/octet-stream" -d@file.txt
-    {"ok":true,"id":"doc","rev":"1-287a28fa680ae0c7fb4729bf0c6e0cf2"}
-
-Now we can request the whole file easily:
-
-.. code-block:: bash
-
-    shell> curl -X GET http://127.0.0.1:5984/test/doc/file.txt
-    My hovercraft is full of eels!
-
-But say we only want the first 13 bytes:
-
-.. code-block:: bash
-
-    shell> curl -X GET http://127.0.0.1:5984/test/doc/file.txt \
-                -H "Range: bytes=0-12"
-    My hovercraft
-
-HTTP supports many ways to specify single and even multiple byte
-ranges. Read all about it in :rfc:`2616#section-14.27`.
-
-.. note::
-   Databases that have been created with CouchDB 1.0.2 or earlier will
-   support range requests in |version|, but they are using a less-optimal
-   algorithm. If you plan to make heavy use of this feature, make sure
-   to compact your database with CouchDB |version| to take advantage of a
-   better algorithm to find byte ranges.


Mime
View raw message