# 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`.
proxy (optional) | Address of a proxy server through which replication 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.

## 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

## 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,
            "data_size": 7580843252,
            "db_name": "mailbox",
            "disk_format_version": 6,
            "disk_size": 14325313673,
            "doc_count": 2262757,
            "doc_del_count": 560,
            "instance_start_time": "1347601025628957",
            "purge_seq": 0,
            "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
    }