blob: 654137708cdf49d877f74bcb8bac325c07a0485c [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/show:
=====================================
``/{db}/_design/{ddoc}/_show/{func}``
=====================================
.. warning::
Show functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.
.. 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/{ddoc}/_show/{func}/{docid}``
=============================================
.. warning::
Show functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.
.. 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/{ddoc}/_list/{func}/{view}``
============================================
.. warning::
List functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.
.. 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/{ddoc}/_list/{func}/{other-ddoc}/{view}``
=========================================================
.. warning::
List functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.
.. 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/{ddoc}/_update/{func}``
=======================================
.. 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/{ddoc}/_update/{func}/{docid}``
===============================================
.. 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
PUT /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"
}