blob: 95aef4f47446934ed4b7762f43140b0e75858953 [file] [log] [blame]
.. 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>`
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. *Deprecated.*
* **rewrites** (*array* or *string*): Rewrite rules definition. *Deprecated.*
* **shows** (*object*): :ref:`Show functions <showfun>` definition. *Deprecated.*
* **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.
* **autoupdate** (*boolean*): Indicates whether to automatically build
indexes defined in this design document. Default is ``true``.
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.
Given that view indexes on disk are named after their MD5 hash of the
view definition, and that a `COPY` operation won't actually change
that definition, the copied views won't have to be reconstructed.
Both views will be served from the same index on disk.
.. 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,
"language": "python",
"purge_seq": 0,
"signature": "a59a1bb13fdf8a8a584bc477919c97ac",
"sizes": {
"active": 926691,
"disk": 1982704,
"external": 1535701
},
"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
* **sizes.active** (*number*): The size of live data inside the view, in bytes
* **sizes.external** (*number*): The uncompressed size of view contents in bytes
* **sizes.file** (*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* / *string*): 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