2. JSON Structure Reference

The following appendix provides a quick reference to all the JSON structures that you can supply to CouchDB, or get in return to requests.

2.1. All Database Documents

Field

Description

total_rows

Number of documents in the database/view

offset

Offset where the document list started

update_seq (optional)

Current update sequence for the database

rows [array]

Array of document object

2.2. Bulk Document Response

Field

Description

docs [array]

Bulk Docs Returned Documents

id

Document ID

error

Error type

reason

Error string with extended reason

2.3. Bulk Documents

Field

Description

docs [array]

Bulk Documents Document

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

_deleted (optional)

Whether the document should be deleted

2.4. Changes information for a database

Field

Description

last_seq

Last update sequence

pending

Count of remaining items in the feed

results [array]

Changes made to a database

seq

Update sequence

id

Document ID

changes [array]

List of changes, field-by-field, for this document

2.5. CouchDB Document

Field

Description

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

2.6. CouchDB Error Status

Field

Description

id

Document ID

error

Error type

reason

Error string with extended reason

2.7. CouchDB database information object

Field

Description

db_name

The name of the database.

committed_update_seq

The number of committed updates.

doc_count

The number of documents in the database.

doc_del_count

The number of deleted documents.

compact_running

Set to true if the database compaction routine is operating on this database.

disk_format_version

The version of the physical format used for the data when it is stored on hard disk.

disk_size

Size in bytes of the data as stored on disk. View indexes are not included in the calculation.

instance_start_time

Timestamp indicating when the database was opened, expressed in microseconds since the epoch.

purge_seq

The number of purge operations on the database.

update_seq

Current update sequence for the database.

2.8. Design Document

Field

Description

_id

Design Document ID

_rev

Design Document Revision

views

View

viewname

View Definition

map

Map Function for View

reduce (optional)

Reduce Function for View

2.9. Design Document Information

Field

Description

name

Name/ID of Design Document

view_index

View Index

compact_running

Indicates whether a compaction routine is currently running on the view

disk_size

Size in bytes of the view as stored on disk

language

Language for the defined views

purge_seq

The purge sequence that has been processed

signature

MD5 signature of the views for the design document

update_seq

The update sequence of the corresponding database that has been indexed

updater_running

Indicates if the view is currently being updated

waiting_clients

Number of clients waiting on views from this design document

waiting_commit

Indicates if there are outstanding commits to the underlying database that need to processed

2.10. Document with Attachments

Field

Description

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

_attachments (optional)

Document Attachment

filename

Attachment information

content_type

MIME Content type string

data

File attachment content, Base64 encoded

2.11. List of Active Tasks

Field

Description

tasks [array]

Active Tasks

pid

Process ID

status

Task status message

task

Task name

type

Operation Type

2.12. Replication Settings

Field

Description

source

Source database name or URL.

target

Target database name or URL.

cancel (optional)

Cancels the replication.

checkpoint_interval (optional)

Specifies the checkpoint interval in ms.

continuous (optional)

Configure the replication to be continuous.

create_target (optional)

Creates the target database.

doc_ids (optional)

Array of document IDs to be synchronized.

filter (optional)

name of the filter function in the form of ddoc/myfilter.

source_proxy (optional)

Address of a proxy server through which replication from the source should occur.

target_proxy (optional)

Address of a proxy server through which replication to the target should occur.

query_params (optional)

Query parameter that are passed to the filter function; the value should be a document containing parameters as members.

selector (optional)

Select the documents included in the replication. This option provides performance benefits compared with using the filter option.

since_seq (optional)

Sequence from which the replication should start.

use_checkpoints (optional)

Whether to use replication checkpoints or not.

winning_revs_only (optional)

Replicate only the winning revisions.

use_bulk_get (optional)

Try to use _bulk_get to fetch revisions.

2.13. Replication Status

Field

Description

ok

Replication status

session_id

Unique session ID

source_last_seq

Last sequence number read from the source database

history [array]

Replication History

session_id

Session ID for this replication operation

recorded_seq

Last recorded sequence number

docs_read

Number of documents read

docs_written

Number of documents written to target

doc_write_failures

Number of document write failures

start_time

Date/Time replication operation started

start_last_seq

First sequence number in changes stream

end_time

Date/Time replication operation completed

end_last_seq

Last sequence number in changes stream

missing_checked

Number of missing documents checked

missing_found

Number of missing documents found

bulk_get_attempts

Number of attempted _bulk_get fetches

bulk_get_docs

Number of documents read with _bulk_get

2.14. Request object

Field

Description

body

Request body data as string. If the request method is GET this field contains the value "undefined". If the method is DELETE or HEAD the value is "" (empty string).

cookie

Cookies object.

form

Form data object. Contains the decoded body as key-value pairs if the Content-Type header was application/x-www-form-urlencoded.

headers

Request headers object.

id

Requested document id string if it was specified or null otherwise.

info

Database information

method

Request method as string or array. String value is a method as one of: HEAD, GET, POST, PUT, DELETE, OPTIONS, and TRACE. Otherwise it will be represented as an array of char codes.

path

List of requested path sections.

peer

Request source IP address.

query

URL query parameters object. Note that multiple keys are not supported and the last key value suppresses others.

requested_path

List of actual requested path section.

raw_path

Raw requested path string.

secObj

Security Object.

userCtx

User Context Object.

uuid

Generated UUID by a specified algorithm in the config file.

{
    "body": "undefined",
    "cookie": {
        "AuthSession": "cm9vdDo1MDZBRjQzRjrfcuikzPRfAn-EA37FmjyfM8G8Lw",
        "m": "3234"
    },
    "form": {},
    "headers": {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
        "Accept-Encoding": "gzip,deflate,sdch",
        "Accept-Language": "en-US,en;q=0.8",
        "Connection": "keep-alive",
        "Cookie": "m=3234:t|3247:t|6493:t|6967:t|34e2:|18c3:t|2c69:t|5acb:t|ca3:t|c01:t|5e55:t|77cb:t|2a03:t|1d98:t|47ba:t|64b8:t|4a01:t; AuthSession=cm9vdDo1MDZBRjQzRjrfcuikzPRfAn-EA37FmjyfM8G8Lw",
        "Host": "127.0.0.1:5984",
        "User-Agent": "Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7"
    },
    "id": "foo",
    "info": {
        "committed_update_seq": 2701412,
        "compact_running": false,
        "db_name": "mailbox",
        "disk_format_version": 6,
        "doc_count": 2262757,
        "doc_del_count": 560,
        "instance_start_time": "1347601025628957",
        "purge_seq": 0,
        "sizes": {
          "active": 7580843252,
          "disk": 14325313673,
          "external": 7803423459
        },
        "update_seq": 2701412
    },
    "method": "GET",
    "path": [
        "mailbox",
        "_design",
        "request",
        "_show",
        "dump",
        "foo"
    ],
    "peer": "127.0.0.1",
    "query": {},
    "raw_path": "/mailbox/_design/request/_show/dump/foo",
    "requested_path": [
        "mailbox",
        "_design",
        "request",
        "_show",
        "dump",
        "foo"
    ],
    "secObj": {
        "admins": {
            "names": [
                "Bob"
            ],
            "roles": []
        },
        "members": {
            "names": [
                "Mike",
                "Alice"
            ],
            "roles": []
        }
    },
    "userCtx": {
        "db": "mailbox",
        "name": "Mike",
        "roles": [
            "user"
        ]
    },
    "uuid": "3184f9d1ea934e1f81a24c71bde5c168"
}

2.15. Request2 object

Field

Description

body

Request body data as string. If the request method is GET this field contains the value "undefined". If the method is DELETE or HEAD the value is "" (empty string).

cookie

Cookies object.

headers

Request headers object.

method

Request method as string or array. String value is a method as one of: HEAD, GET, POST, PUT, DELETE, OPTIONS, and TRACE. Otherwise it will be represented as an array of char codes.

path

List of requested path sections.

peer

Request source IP address.

query

URL query parameters object. Note that multiple keys are not supported and the last key value suppresses others.

requested_path

List of actual requested path section.

raw_path

Raw requested path string.

secObj

Security Object.

userCtx

User Context Object.

2.16. Response object

Field

Description

code

HTTP status code number.

json

JSON encodable object. Implicitly sets Content-Type header as application/json.

body

Raw response text string. Implicitly sets Content-Type header as text/html; charset=utf-8.

base64

Base64 encoded string. Implicitly sets Content-Type header as application/binary.

headers

Response headers object. Content-Type header from this object overrides any implicitly assigned one.

stop

boolean signal to stop iteration over view result rows (for list functions only)

Warning

The body, base64 and json object keys are overlapping each other where the last one wins. Since most realizations of key-value objects do not preserve the key order or if they are mixed, confusing situations can occur. Try to use only one of them.

Note

Any custom property makes CouchDB raise an internal exception. Furthermore, the Response object could be a simple string value which would be implicitly wrapped into a {"body": ...} object.

2.17. Returned CouchDB Document with Detailed Revision Info

Field

Description

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

_revs_info [array]

CouchDB document extended revision info

rev

Full revision string

status

Status of the revision

2.18. Returned CouchDB Document with Revision Info

Field

Description

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

_revisions

CouchDB document revisions

ids [array]

Array of valid revision IDs, in reverse order (latest first)

start

Prefix number for the latest revision

2.19. Returned Document with Attachments

Field

Description

_id (optional)

Document ID

_rev (optional)

Revision ID (when updating an existing document)

_attachments (optional)

Document attachment

filename

Attachment

stub

Indicates whether the attachment is a stub

content_type

MIME Content type string

length

Length (bytes) of the attachment data

revpos

Revision where this attachment exists

2.20. Security Object

Field

Description

admins

Roles/Users with admin privileges

roles [array]

List of roles with parent privilege

names [array]

List of users with parent privilege

members

Roles/Users with non-admin privileges

roles [array]

List of roles with parent privilege

names [array]

List of users with parent privilege

{
    "admins": {
        "names": [
            "Bob"
        ],
        "roles": []
    },
    "members": {
        "names": [
            "Mike",
            "Alice"
        ],
        "roles": []
    }
}

2.21. User Context Object

Field

Description

db

Database name in the context of the provided operation.

name

User name.

roles

List of user roles.

{
    "db": "mailbox",
    "name": null,
    "roles": [
        "_admin"
    ]
}

2.22. View Head Information

Field

Description

total_rows

Number of documents in the view

offset

Offset where the document list started

{
    "total_rows": 42,
    "offset": 3
}