# 1.5.7. `/db/_design/design-doc/_show/show-name`

Warning

Show functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.

`GET` `/{db}/_design/{ddoc}/_show/{func}`

`POST` `/{db}/_design/{ddoc}/_show/{func}`

  Applies show function for `null` document.

  The request and response parameters are depended upon function implementation.

  Parameters:

  - db – Database name
  - ddoc – Design document name
  - func – Show function name

  Response Headers:

  - ETag – Response signature

  Query Parameters:

  - format (string) – Format of the returned response. Used by `provides()` function

  Status Codes:

  - 200 OK – Request completed successfully
  - 500 Internal Server Error – Query server error

  Function:

      function(doc, req) {
          if (!doc) {
              return {body: "no doc"}
          } else {
              return {body: doc.description}
          }
      }

  Request:

      GET /recipes/_design/recipe/_show/description HTTP/1.1
      Accept: application/json
      Host: localhost:5984

  Response:

      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

# 1.5.8. `/db/_design/design-doc/_show/show-name/doc-id`

Warning

Show functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.

`GET` `/{db}/_design/{ddoc}/_show/{func}/{docid}`

`POST` `/{db}/_design/{ddoc}/_show/{func}/{docid}`

  Applies show function for the specified document.

  The request and response parameters are depended upon function implementation.

  Parameters:

  - db – Database name
  - ddoc – Design document name
  - func – Show function name
  - docid – Document ID

  Response Headers:

  - ETag – Response signature

  Query Parameters:

  - format (string) – Format of the returned response. Used by `provides()` function

  Status Codes:

  - 200 OK – Request completed successfully
  - 500 Internal Server Error – Query server error

  Function:

      function(doc, req) {
          if (!doc) {
              return {body: "no doc"}
          } else {
              return {body: doc.description}
          }
      }

  Request:

      GET /recipes/_design/recipe/_show/description/SpaghettiWithMeatballs HTTP/1.1
      Accept: application/json
      Host: localhost:5984

  Response:

      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.

# 1.5.9. `/db/_design/design-doc/_list/list-name/view-name`

Warning

List functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.

`GET` `/{db}/_design/{ddoc}/_list/{func}/{view}`

`POST` `/{db}/_design/{ddoc}/_list/{func}/{view}`

  Applies list function for the view function from the same design document.

  The request and response parameters are depended upon function implementation.

  Parameters:

  - db – Database name
  - ddoc – Design document name
  - func – List function name
  - view – View function name

  Response Headers:

  - ETag – Response signature
  - Transfer-Encoding – `chunked`

  Query Parameters:

  - format (string) – Format of the returned response. Used by `provides()` function

  Status Codes:

  - 200 OK – Request completed successfully
  - 500 Internal Server Error – Query server error

  Function:

      function(head, req) {
          var row = getRow();
          if (!row){
              return 'no ingredients'
          }
          send(row.key);
          while(row=getRow()){
              send(', ' + row.key);
          }
      }

  Request:

      GET /recipes/_design/recipe/_list/ingredients/by_name HTTP/1.1
      Accept: text/plain
      Host: localhost:5984

  Response:

      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

# 1.5.10. `/db/_design/design-doc/_list/list-name/other-ddoc/view-name`

Warning

List functions are deprecated in CouchDB 3.0, and will be removed in CouchDB 4.0.

`GET` `/{db}/_design/{ddoc}/_list/{func}/{other-ddoc}/{view}`

`POST` `/{db}/_design/{ddoc}/_list/{func}/{other-ddoc}/{view}`

  Applies list function for the view function from the other design document.

  The request and response parameters are depended upon function implementation.

  Parameters:

  - db – Database name
  - ddoc – Design document name
  - func – List function name
  - other-ddoc – Other design document name that holds view function
  - view – View function name

  Response Headers:

  - ETag – Response signature
  - Transfer-Encoding – `chunked`

  Query Parameters:

  - format (string) – Format of the returned response. Used by `provides()` function

  Status Codes:

  - 200 OK – Request completed successfully
  - 500 Internal Server Error – Query server error

  Function:

      function(head, req) {
          var row = getRow();
          if (!row){
              return 'no ingredients'
          }
          send(row.key);
          while(row=getRow()){
              send(', ' + row.key);
          }
      }

  Request:

      GET /recipes/_design/ingredient/_list/ingredients/recipe/by_ingredient?key="spaghetti" HTTP/1.1
      Accept: text/plain
      Host: localhost:5984

  Response:

      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

# 1.5.11. `/db/_design/design-doc/_update/update-name`

`POST` `/{db}/_design/{ddoc}/_update/{func}`

  Executes update function on server side for `null` document.

  Parameters:

  - db – Database name
  - ddoc – Design document name
  - func – Update function name

  Response Headers:

  - X-Couch-Id – Created/updated document’s ID
  - X-Couch-Update-Newrev – Created/updated document’s revision

  Status Codes:

  - 200 OK – No document was created or updated
  - 201 Created – Document was created or updated
  - 500 Internal Server Error – Query server error

  Function:

      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:

      POST /recipes/_design/recipe/_update/ingredients HTTP/1.1
      Accept: application/json
      Content-Length: 10
      Content-Type: application/json
      Host: localhost:5984

      "something"

  Response:

      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"
      }

# 1.5.12. `/db/_design/design-doc/_update/update-name/doc-id`

`PUT` `/{db}/_design/{ddoc}/_update/{func}/{docid}`

  Executes update function on server side for the specified document.

  Parameters:

  - db – Database name
  - ddoc – Design document name
  - func – Update function name
  - docid – Document ID

  Response Headers:

  - X-Couch-Id – Created/updated document’s ID
  - X-Couch-Update-Newrev – Created/updated document’s revision

  Status Codes:

  - 200 OK – No document was created or updated
  - 201 Created – Document was created or updated
  - 500 Internal Server Error – Query server error

  Function:

      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:

      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:

      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"
      }