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.

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