Alexander Shorin avatar Alexander Shorin committed c143d64 Merge

Merge with docs

Comments (0)

Files changed (18)

 
 # Add any Sphinx extension module names here, as strings. They can be extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode']
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.intersphinx',
+    'sphinx.ext.todo',
+    'sphinx.ext.ifconfig',
+    'sphinx.ext.viewcode'
+]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
 # built documents.
 #
 # The short X.Y version.
-version = '0.1'
+version = '1.1'
 # The full version, including alpha/beta/rc tags.
-release = '0.1'
+release = '1.1'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
-#language = None
+language = 'ru'
 
 # There are two options for replacing |today|: either, you set today to some
 # non-false value, then it is used:
 
 # If true, sectionauthor and moduleauthor directives will be shown in the
 # output. They are ignored by default.
-#show_authors = False
+show_authors = True
 
 # The name of the Pygments (syntax highlighting) style to use.
 pygments_style = 'sphinx'
 
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
-html_theme = 'default'
+html_theme = 'pyramid'
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # -- Options for LaTeX output --------------------------------------------------
 
 latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
+    # The paper size ('letterpaper' or 'a4paper').
+    #'papersize': 'letterpaper',
 
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
+    # The font size ('10pt', '11pt' or '12pt').
+    #'pointsize': '10pt',
 
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
+    # Additional stuff for the LaTeX preamble.
+    #'preamble': '',
 }
 
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass [howto/manual]).
 latex_documents = [
-  ('index', 'hydra.tex', u'hydra Documentation',
-   u'Alexander Shorin', 'manual'),
+    ('index', 'hydra.tex', u'hydra Documentation',
+     u'Alexander Shorin', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-  ('index', 'hydra', u'hydra Documentation',
-   u'Alexander Shorin', 'hydra', 'One line description of project.',
-   'Miscellaneous'),
+    ('index', 'hydra', u'hydra Documentation',
+     u'Alexander Shorin', 'hydra', 'One line description of project.',
+     'Miscellaneous'),
 ]
 
 # Documents to append as an appendix to all manuals.
 
 
 # Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {'http://docs.python.org/': None}
+intersphinx_mapping = {
+    'http://docs.python.org/': None,
+    'http://docs.couchdb.org/en/latest/': None
+}

docs/couchdb/auth.rst

+
+.. _auth:
+
+********************************************************************************
+Аутентификация
+********************************************************************************
+
+.. _BasicAuth: http://en.wikipedia.org/wiki/Basic_access_authentication
+.. _Cookie: http://en.wikipedia.org/wiki/HTTP_cookie
+.. _OAuth: http://oauth.net/
+
+================================================================================
+Basic auth
+================================================================================
+
+`BasicAuth`_ является самым простым методом аутентификации, но требует
+постоянную передачу логина и пароля для каждого запроса в открытом виде т.к.
+не подразумевает наличие сессий.
+
+.. code-block:: text
+
+  > GET / HTTP/1.1
+  > Authentication: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
+  > Host: http://localhost:5984
+
+  < HTTP/1.1 200 OK
+  < Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
+  < Date: Sat, 14 Feb 2009 02:31:30
+  < Content-Type: text/plain; charset=utf-8
+  < Content-Length: 53
+
+
+================================================================================
+Cookie
+================================================================================
+
+Аутентификация по `Cookie`_ позволяет создать кратковременную сессию, в рамках
+который выданный `cookie` будет активен. В случае, если в течении 10 минут
+не было произведено ни одного запроса с ее использованием, `cookie` будет
+аннулирована.
+
+
+.. _get_session:
+
+--------------------------------------------------------------------------------
+Получение информации о текущей сессии
+--------------------------------------------------------------------------------
+
+.. code-block:: text
+
+  > GET /_session HTTP/1.1
+  > Authentication: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
+  > Host: http://localhost:5984
+  > Accept: application/json
+
+  < HTTP/1.1 200 OK
+  < Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
+  < Date: Sat, 14 Feb 2009 02:31:30
+  < Content-Type: text/plain;charset=utf-8
+  < Content-Length: 194
+
+.. code-block:: javascript
+
+  {
+    "ok": true,
+    "userCtx": {
+      "name": "username",
+      "roles": ["role1", "role2"]
+    },
+    "info": {
+      "authentication_db": "_users",
+      "authentication_handlers": ["oauth", "cookie", "default"],
+      "authenticated": "default"
+      }
+    }
+  }
+
+
+.. _post_session:
+
+--------------------------------------------------------------------------------
+Открытие новой сессии
+--------------------------------------------------------------------------------
+
+.. code-block:: text
+
+  > POST /_session HTTP/1.1
+  > Host: http://localhost:5984
+  > Accept: application/json
+  > Content-Length: 31
+  > Content-Type: application/x-www-form-urlencoded
+
+  < HTTP/1.1 200 OK
+  < Set-Cookie: AuthSession=cm9vdDo0RTM0QUFEMjoF_3ApHXh5RQhKP6ZSPyPuxpKRpw; Version=1; Path=/; HttpOnly
+  < Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
+  < Date: Sat, 14 Feb 2009 02:31:30
+  < Content-Type: application/json
+  < Content-Length: 50
+
+.. code-block:: javascript
+
+  {
+    "ok": true,
+    "name": "username",
+    "roles": ["role1", "role2"]
+  }
+
+
+.. _delete_session:
+
+--------------------------------------------------------------------------------
+Закрытие сессии
+--------------------------------------------------------------------------------
+
+.. code-block:: text
+
+  > DELETE /_session HTTP/1.1
+  > Host: http://localhost:5984
+  > Accept: application/json
+  > Cookie: AuthSession=cm9vdDo0RTM0QUFEMjoF_3ApHXh5RQhKP6ZSPyPuxpKRpw
+
+  < HTTP/1.1 200 OK
+  < Set-Cookie: AuthSession=; Version=1; Path=/; HttpOnly
+  < Server: CouchDB/1.1.0 (Erlang OTP/R14B03)
+  < Date: Sat, 14 Feb 2009 02:31:30
+  < Content-Type: application/json
+  < Content-Length: 12
+
+.. code-block:: javascript
+
+  {"ok": true}
+
+
+================================================================================
+OAuth
+================================================================================
+
+--------------------------------------------------------------------------------
+Пример подключения
+--------------------------------------------------------------------------------
+
+.. code-block:: python
+
+  import oauth
+  import httplib
+
+  URL='http://localhost:5984/_session'
+  KEY=':partner-id'
+  TOKEN='token'
+  SECRET='secret'
+
+  consumer = oauth.OAuthConsumer(KEY, 'your secret')
+  token = oauth.OAuthToken(TOKEN, SECRET)
+  req = oauth.OAuthRequest.from_consumer_and_token(
+    consumer, token=token, http_method='GET', http_url=URL, parameters={}
+  )
+  req.sign_request(oauth.OAuthSignatureMethod_HMAC_SHA1(), consumer,token)
+
+  con = httplib.HTTPConnection('http://localhost:5984/')
+  con.request('GET', URL,headers=req.to_header())
+  print con.getresponse().read()

docs/couchdb/clients.rst

+
+.. _couchdb.clients:
+
+================================================================================
+Клиентские библиотеки
+================================================================================
+
+--------------------------------------------------------------------------------
+Clojure
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+clutch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/ashafa/clutch
+:Документация: http://ashafa.com/clutch/com.ashafa.clutch-api.html
+
+--------------------------------------------------------------------------------
+Erlang
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+couchbeam
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/benoitc/couchbeam
+:Документация: http://benoitc.github.com/couchbeam
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Hovercraft
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/jchris/hovercraft
+
+--------------------------------------------------------------------------------
+Java
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Ektorp
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/helun/Ektorp
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+JRelax
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: http://wiki.github.com/isterin/jrelax
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+jcouchdb
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий:  http://code.google.com/p/jcouchdb
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+CouchDB4J
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/mbreese/couchdb4j
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LightCouch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/ahmedyha/LightCouch
+:Документация: http://www.lightcouch.org/lightcouch-guide.html
+
+--------------------------------------------------------------------------------
+Javascript
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+jquery.couch.js
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/apache/couchdb/blob/trunk/share/www/script/jquery.couch.js
+:Документация: https://github.com/lenalena/couchdb-http-api-docs
+
+--------------------------------------------------------------------------------
+node.js
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+node-couchdb-api
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: http://dominicbarnes.us/node-couchdb-api
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+couch-client
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/creationix/couch-client
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+node-couch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/sixtus/node-couch
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+node-couchdb-min
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/rsms/node-couchdb-min
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+PJsonCouch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/landeiro/PJsonCouch
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+cradle
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/cloudhead/cradle
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+nano
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/dscape/nano/
+
+--------------------------------------------------------------------------------
+.NET
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Ottoman
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/sinesignal/ottoman
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Divan
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/foretagsplatsen/Divan
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+LoveSeat
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/soitgoes/LoveSeat
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Relax
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/arobson/Relax
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+SharpCouch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: http://code.google.com/p/couchbrowse
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Hammock
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: http://code.google.com/p/relax-net
+
+--------------------------------------------------------------------------------
+PHP
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Sag
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Сайт: http://www.saggingcouch.com
+:Репозиторий: https://github.com/sbisbee/sag
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+PHP-on-Couch
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/dready92/PHP-on-Couch
+:Документация: https://github.com/dready92/PHP-on-Couch/tree/master/doc
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+PHPillow
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Сайт: http://arbitracker.org/phpillow.html
+:Репозиторий: svn://arbitracker.org/phpillow
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+PHP "object freezer"
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/sebastianbergmann/php-object-freezer
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Couchdb ODM
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/doctrine/couchdb-odm
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Seat-PHP
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/stackd/seat-php
+
+--------------------------------------------------------------------------------
+Python
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+couchdbkit
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Сайт: http://couchdbkit.org
+:Репозиторий: https://github.com/benoitc/couchdbkit
+:Документация: http://couchdbkit.org/docs/gettingstarted.html
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+couchdb-python
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: http://code.google.com/p/couchdb-python
+:Документация: http://packages.python.org/CouchDB
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+couchquery
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: http://mikeal.github.com/couchquery.
+
+--------------------------------------------------------------------------------
+Ruby
+--------------------------------------------------------------------------------
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+CouchRest
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/couchrest/couchrest
+:Документация: https://github.com/couchrest/couchrest_extended_document
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+CouchPotato
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/langalex/couch_potato
+:Документация: https://github.com/langalex/couch_potato/blob/master/README.md
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Aqua
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/baccigalupi/aqua
+:Документация: http://ruby-aqua.org/
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+RockingChair
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/jweiss/rocking_chair
+
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Simply Stored
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+:Репозиторий: https://github.com/peritor/simply_stored

docs/couchdb/index.rst

+
+.. _couchdb:
+
+================================================================================
+CouchDB
+================================================================================
+
+В основе сервиса лежит СУБД :term:`CouchDB` и мы предоставляем полный доступ
+к реализуемому им API на уровне базы данных и сервера. Чтобы не дублировать
+уже имеющуюся информацию, мы составили :ref:`набор ресурсов <couchdb.links>`,
+с которыми стоит ознакомиться для понимания принципов и схемы работы CouchDB.
+
+По сути, данный сервис представляет из себя комбинацию :term:`CouchApp`
+приложений, предоставляющих интерфейс для взаимодействия с внутренними
+информационными системами. Никакой магии.
+
+Для упрощения взаимодействия с сервисом уже существует множество реализаций
+:ref:`клиентов <couchdb.clients>` под разные языки и платформы, тем самым
+обеспечивая уже готовый базовый набор инструментов для дальнейшего
+взаимодействия.
+
+.. toctree::
+  :maxdepth: 2
+
+  links.rst
+  clients.rst
+  auth.rst
+  mirror.rst

docs/couchdb/links.rst

+
+.. _couchdb.links:
+
+********************************************************************************
+Ресурсы по CouchDB
+********************************************************************************
+
+* **Официальные ресурсы**:
+
+  * `The Apache CouchDB Project <http://couchdb.apache.org>`_
+  * `Planet CouchDB <http://planet.couchdb.org>`_
+  * `Community wiki <http://wiki.apache.org/couchdb>`_
+
+    * `Authentication <http://wiki.apache.org/couchdb/Authentication_and_Authorization>`_
+    * `Database API <https://wiki.apache.org/couchdb/HTTP_database_API>`_
+    * `Document API <https://wiki.apache.org/couchdb/HTTP_Document_API>`_
+    * `Replication <https://wiki.apache.org/couchdb/Replication>`_
+    * `Views <https://wiki.apache.org/couchdb/Introduction_to_CouchDB_views>`_
+    * `Formatting documents <https://wiki.apache.org/couchdb/Formatting_with_Show_and_List>`_
+    * `Update handlers <https://wiki.apache.org/couchdb/Document_Update_Handlers>`_
+    * `Document validation <https://wiki.apache.org/couchdb/Document_Update_Validation>`_
+
+  * `CouchDB: The Definitive Guide <http://books.couchdb.org/relax>`_
+  * `Bug tracker <http://issues.apache.org/jira/browse/COUCHDB>`_
+  * `IRC <irc://irc.freenode.net/couchdb>`_
+  * `Twitter <http://twitter.com/CouchDB>`_
+  * `GitHub <http://github.com/apache/couchdb>`_
+
+* **Couchapps**:
+
+  * `CouchApp Development Tools <http://couchapp.org/page/index>`_
+  * `CouchApp: JavaScript приложения в CouchDB <http://habrahabr.ru/blogs/nosql/110675>`_
+
+* **Прочие ресурсы**:
+
+  * `Документация от Couchbase <http://www.couchbase.org/sites/default/files/uploads/all/documentation/couchbase-api.html>`_
+  * `CouchDB сегодня <http://habrahabr.ru/blogs/nosql/101251/>`_
+  * `16 практических советов по работе с CouchDB <http://habrahabr.ru/blogs/nosql/123338>`_
+  * `Видео о CouchDB <http://relaxed.tv>`_

docs/couchdb/mirror.rst

+
+.. _couchdb.replications:
+
+================================================================================
+Репликация данных
+================================================================================
+
+Встроенная поддержка инкрементной репликаций данных позволяет без дополнительных
+затрат поддерживать множество базы в одинаковом состоянии. Эти базы могут
+находиться одном сервере или на удаленных серверах, причем один из серверов
+может выступать менеджером репликаций данных между двумя другими - механизм
+работы будет одинаков во всех случаях. Подробней с принципами работы репликаций
+можно ознакомиться в `wiki-статье <http://wiki.apache.org/couchdb/Replication>`_
+и в соответствующем `разделе <http://guide.couchdb.org/draft/replication.html>`_
+книги `CouchDB: The Definition Guide <http://guide.couchdb.org>`_.
+
+Репликации позволяют не только просто создавать копии баз, распределять нагрузку
+и вычислительные процессы, но и так же разделять данные на различные уровни
+представления, тем самым упрощая взаимодействие с конечным потребителем данных.
+В качестве живого примера, данный сервис работает по следующей схеме, разделяя
+данные на три уровня:
+
+* ``tier-0``: Данные представлены максимально близко к оригинальному виду, в
+  котором ими оперирует исходная информационная система, будь то 1C, CRM или
+  база MySQL.
+  Обычно, данные в таком виде не совсем удобны для работы в среде CouchDB,
+  поэтому для дальнейшей удобной работы с ними они переходят в следующее
+  состояние.
+
+* ``tier-1``: На этом уровне исходные данные уже специально обработаны для
+  логики работы CouchDB: отношения денормализованы там, где они не могут
+  соответствовать принципу документо-ориентованному хранилищу данных, каждое
+  событие представлено отдельным документом, а не обновлением данных
+  предыдущего и т.д. Именно этот уровень описывает данная документация.
+
+* ``tier-2``: Данный уровень выделяется в случае, когда потребителю данных
+  требуется отличная от предлагаемой структура данных в ввиду устоявшегося
+  протокола обмена информацией, либо по специальной договоренности.
+
+Обработчик каждого уровня знает, как сконвертировать данные своего уровня в
+структуру для каждого соседнего уровня.
+
+Такая схема может показаться слишком избыточной, но она гарантирует сохранность
+исходной информации, упрощает ее дальнейшую модификацию и резервные копии еще
+никогда не были лишними.
+
+--------------------------------------------------------------------------------
+Создание локального зеркала
+--------------------------------------------------------------------------------
+
+Вы можете установить сервер CouchDB в своей сети и настроить постоянную
+репликацию данных между ним и нашими серверами. Это не запрещается, а наоборот,
+приветствуется, поскольку тем самым вы:
+
+- Снижаете нагрузку с наших серверов;
+- Увеличиваете отзывчивость и скорость передачи данных, поскольку ваша копия
+  скорее всего будет располагаться в вашей же локальной сети;
+- Получаете полный контроль над своими данными. Мы не можем позволить себе
+  свободное выполнение произвольного кода даже в рамках песочницы CouchDB,
+  равно как и обеспечить полноценную поддержку различных
+  :term:`серверов запросов <QS>` и дополнительных серверных обработчиков данных.
+  Имея свою локальную копию базы, вы не столкнетесь с этими ограничениями.
+
+Для создания полноценной работоспособной копии базы необходимо:
+
+1. `Установить сервер CouchDB <http://wiki.apache.org/couchdb/Installation>`_.
+   Рекомендуется к установке всегда последняя версия, желательно на Linux/BSD
+   систему, поскольку скорость работы заметно выше(в среднем до 2х раз), чем на
+   Windows-системе. Но и в Windows среде работа сервера достаточно стабильна.
+
+2. Зайти в Futon:
+
+   .. code-block:: text
+
+     http://localhost:5984/_utils
+
+3. В меню справа выбрать `Replicator`. Указать базу-источник на сервере в
+   формате ``http://user:pswd@server/db`` - учтите, что ``user`` и ``pswd``
+   должны быть `экранированными <http://ru.wikipedia.org/wiki/URL#.D0.9A.D0.BE.D0.B4.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_URL>`_
+   -, указать базу куда реплицировать данные. Нажать на кнопку `Replicate`.
+
+4. **Relax!**
+
+  .. note::
+     В случае отсутствия `python` :term:`сервера запросов <qs>`,
+     среплицированная копия базы будет неработоспособна: не будут доступны
+     все имеющиеся :term:`представления <views>` и другие функции, а так же
+     будет невозможна запись новых и модификация имеющихся документов.
+     Этот вопрос находится на грани корректной конфигурации сервера CouchDB и
+     его взаимодействия с пользовательским окружением, поэтому его сложно
+     считать явной ошибкой. Отслеживать проблему можно по тикету
+     `COUCHDB-1503 <https://issues.apache.org/jira/browse/COUCHDB-1503>`_.
+     Если необходимо получить просто данные, то потребуется удалить все
+     :term:`ddoc` документы, чтобы получить возможность их модификации в
+     локальной базе.
+
+5. Необязательные действия.
+   Поскольку все :term:`design-документы <ddoc>` используют сервер запросов
+   Python, то для их работоспособности необходимо выполнить следующие действия:
+
+  .. code-block:: bash
+
+      # Предварительные условия:
+      # 1. В системе уже установлен Python версии 2.6 или 2.7
+      #    http://python.org/
+      # 2. Установлен пакет setup-tools
+      #    http://pypi.python.org/pypi/setuptools/
+      # 3. Необязательно, но рекомендуется так же установить virtualenv
+      #    http://pypi.python.org/pypi/virtualenv/
+      # 4. Для некоторых операций понадобится VCS mercurial:
+      #    http://mercurial.selenic.com/
+
+      # 1. Создание виртуального окружения
+      /var/lib/python $ virtualenv --no-site-packages --distribute couchdb-python
+
+      # 2. Активация виртуального окружения
+      /var/lib/python $ cd couchdb-python && source bin/activate
+
+      # 3. Установка couchdb-python
+      (couchdb-python) $ hg clone https://kxepal-couchdb-python-featured.googlecode.com/hg couchdb-python
+      (couchdb-python) $ cd couchdb-python
+      (couchdb-python) $ hg update viewserver
+      (couchdb-python) $ python setup.py install
+
+      # 4. Настройка query server
+      ~ $ curl -X PUT http://localhost:5984/_config/query_servers -d python=/var/lib/python/couchdb-python/bin/couchpy
+
+      # 5. Установка дополнительных пакетов
+
+      # 5.1 Если необходима поддержка формата YAML
+      (couchdb-python) $ pip install pyyaml
+
+      # 5.2 Если необходима поддержка формата HTML
+      (couchdb-python) $ pip install jinja
+
+      # 5.3 Если необходима поддержка формата UBJSON
+      (couchdb-python) $ hg clone https://simpleubjson.googlecode.com/hg simpleubjson
+      (couchdb-python) $ cd simpleubjson && python setup.py install
+
+      # 5.5 По желанию, для использования более быстрых обработчиков xml и json
+      (couchdb-python) $ pip install lxml ujson
+
+      # Последовательность действий для Windows аналогичны.

docs/data/format.rst

+
+.. _data.formats:
+
+********************************************************************************
+Форматы данных
+********************************************************************************
+
+По умолчанию, :term:`CouchDB` использует формат :ref:`format_json` для всех
+операций получения и передачи данных. В общем случае рекомендуется работать
+с ним, однако в рамках сервиса доступна возможность оперировать данными в других
+форматах: :ref:`format_ubjson`, :ref:`format_xml-rpc` и :ref:`format_yaml`.
+Данные возможность доступна для :term:`show` и :term:`list` функций при
+:ref:`указании <format_usage>` используемого формата в запросе.
+
+
+.. _format_json:
+
+================================================================================
+JSON
+================================================================================
+
+Возвращает данные в формате `JSON <http://json.org/>`_. Используется по
+умолчанию.
+
+:Библиотека: `ujson <https://github.com/esnme/ultrajson>`_
+:Версия: 1.9
+:Репозиторий: https://github.com/esnme/ultrajson
+:Лицензия: `BSD <http://www.opensource.org/licenses/bsd-license.php>`_
+
+
+
+.. _format_ubjson:
+
+================================================================================
+Universal Binary JSON
+================================================================================
+
+Возвращает данные в формате `Universal Binary JSON <http://ubjson.org/>`_.
+Это бинарный JSON совместимый формат структуры TLV. Он более компактный и
+поддерживает потоковую обработку больших объемов данных.
+
+:Библиотека: `simpleubjson <http://code.google.com/p/simpleubjson>`_
+:Версия: 0.3-dev
+:Репозиторий: http://code.google.com/p/simpleubjson/
+:Лицензия: `New BSD <https://simpleubjson.googlecode.com/hg/COPYING>`_
+
+
+
+.. _format_xml-rpc:
+
+================================================================================
+XML-RPC
+================================================================================
+
+Возвращает данные в формате XML. Структура данных в запросах и ответах совпадает
+со структурой, описанной в стандарте протокола XML-RPC, однако сервис не
+является полноценным XML-RPC сервером.
+
+:Библиотека: `xmlrpclib <http://docs.python.org/library/xmlrpclib.html>`_
+:Версия: 2.7.2
+:Репозиторий: http://hg.python.org/cpython/file/2.7/Lib/xmlrpclib.py
+:Лицензия: `PSF <http://docs.python.org/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python>`_
+
+
+
+.. _format_yaml:
+
+================================================================================
+YAML
+================================================================================
+
+Возвращает данные в формате `YAML <http://yaml.org/>`_. Удобен для чтения и
+diff сравнений.
+
+:Библиотека: `PyYAML <http://pyyaml.org/>`_
+:Версия: 3.10
+:Репозиторий: http://svn.pyyaml.org/pyyaml/trunk
+:Лицензия: `MIT <http://pyyaml.org/export/385/pyyaml/tags/3.10/LICENSE>`_
+
+
+
+.. _format_html:
+
+================================================================================
+HTML
+================================================================================
+
+Используется для представления данных или интерфейса к ним в :term:`show` и
+:term:`list` функциях.
+
+:Библиотека: `Jinja <http://jinja.pocoo.org/>`_
+:Версия: 2.6
+:Репозиторий: https://github.com/mitsuhiko/jinja2
+:Лицензия: `BSD <https://github.com/mitsuhiko/jinja2/blob/master/LICENSE>`_
+
+
+
+.. _format_usage:
+
+================================================================================
+Использование различных форматов в запросах
+================================================================================
+
+Данные действия актуальны для запросов к :term:`show`, :term:`list` и, частично,
+к :term:`update` функциям.
+
+--------------------------------------------------------------------------------
+Заголовки Content-Type и Accept
+--------------------------------------------------------------------------------
+
+* **Content-Type**:
+
+  * **Описание**: Определяет формат передаваемых данных.
+  * **Опционален**: нет
+  * **Тип**: :ref:`type_string`
+  * **Возможные значения**:
+
+    * :ref:`application/json <format_json>`
+    * :ref:`application/x-ubjson <format_ubjson>`
+    * :ref:`application/xml+rpc <format_xml-rpc>`
+    * :ref:`application/x-yaml <format_yaml>`
+
+* **Accept**:
+
+  * **Описание**: Определяет формат возвращаемых данных.
+  * **Опционален**: нет
+  * **Тип**: :ref:`type_string`
+  * **Возможные значения**:
+
+    * `text/plain`
+    * :ref:`application/json <format_json>`
+    * :ref:`application/x-ubjson <format_ubjson>`
+    * :ref:`application/xml+rpc <format_xml-rpc>`
+    * :ref:`application/x-yaml <format_yaml>`
+    * :ref:`text/html <format_html>`
+
+--------------------------------------------------------------------------------
+Параметр запроса format
+--------------------------------------------------------------------------------
+
+* **format**:
+
+  * **Описание**: Определяет формат возвращаемых данных. Имеет приоритет над
+    указаниями в HTTP заголовке ``Accept``.
+  * **Опционален**: да
+  * **Тип**: :ref:`type_string`
+  * **Возможные значения**:
+
+    * :ref:`json <format_json>`
+    * :ref:`ubjson <format_ubjson>`
+    * :ref:`xml-rpc <format_xml-rpc>`
+    * :ref:`yaml <format_yaml>`
+    * :ref:`html <format_html>`

docs/data/index.rst

+
+.. _data:
+
+================================================================================
+Структура данных
+================================================================================
+
+.. toctree::
+  :maxdepth: 2
+
+  format.rst
+  types.rst

docs/data/types.rst

+
+.. _data.types:
+
+********************************************************************************
+Типы данных
+********************************************************************************
+
+Поскольку в качестве основного протокола сервиса используется формат JSON, то
+все основные типы основаны на этом стандарте, за редким
+:ref:`исключением <type_datetime>`. Поскольку формат JSON сам по себе простой
+и в меру универсальный, то мы с легкостью можем конвертировать его в другие
+форматы, не опасаясь потери семантики или данных.
+
+
+.. _type_null:
+
+================================================================================
+null
+================================================================================
+
+Пустое значение.
+
+* **JSON**:
+
+  .. code-block:: javascript
+
+    {"result": null}
+
+* **UBJSON**:
+
+  .. code-block:: text
+
+    5A
+
+* **XML-RPC**:
+
+  .. code-block:: xml
+
+    <nil/>
+
+* **YAML**:
+
+  .. code-block:: yaml
+
+    result: null
+
+
+.. _type_boolean:
+
+================================================================================
+boolean
+================================================================================
+
+Булево значение.
+
+* **JSON**:
+
+  .. code-block:: javascript
+
+    {"on": true, "off": false}
+
+* **UBJSON**:
+
+  * False:
+
+    .. code-block:: text
+
+      46
+
+  * True:
+
+    .. code-block:: text
+
+      54
+
+* **XML-RPC**:
+
+  * False:
+
+    .. code-block:: xml
+
+      <boolean>0</boolean>
+
+  * True:
+
+    .. code-block:: xml
+
+      <boolean>1</boolean>
+
+* **YAML**: boolean
+
+  .. code-block:: xml
+
+    off: false
+    on: true
+
+
+.. _type_number:
+
+================================================================================
+number
+================================================================================
+
+Целое или дробное число.
+
+* **JSON**:
+
+  .. code-block:: javascript
+
+    {"answer": 42, "status": 3.14}
+
+* **UBJSON**: В зависимости от значения, возможны разные типы данных:
+
+  * Целое число в диапазоне [-128, 127]: byte
+
+    .. code-block:: text
+
+      42 2F
+
+  * Целое число в диапазоне [-32768, 32767]: int16
+
+    .. code-block:: text
+
+      69 30 39
+
+  * Целое число в диапазоне [-2147483648, 2147483647]: int32
+
+    .. code-block:: text
+
+      49 FF FE 77 6C
+
+  * Целое число в диапазоне [-9223372036854775808, 9223372036854775807]: int64
+
+    .. code-block:: text
+
+      4C 80 00 00 00 00 00 00 00
+
+  * Дробное число в диапазоне [±1.18e-38, ±3.4e38]: float
+
+    .. code-block:: text
+
+      64 40 48 F5 C3
+
+  * Дробное число в диапазоне [±2.23e-308, ±1.80e308]: double
+
+    .. code-block:: text
+    
+      44 71 8E DE 0B 49 13 5B 25
+
+  * Любое другое число кодируется как huge. Более подробно см. спецификацию
+    по типам: http://ubjson.org/type-reference
+
+* **XML-RPC**:
+
+  * Целое число:
+
+    .. code-block:: xml
+
+      <int>42</int>
+
+  * Дробное число:
+
+    .. code-block:: xml
+
+      <double>3.14</dobule>
+
+* **YAML**:
+
+  .. code-block:: yaml
+
+    answer: 42
+    status: 3.14
+
+
+.. _type_string:
+
+================================================================================
+string
+================================================================================
+
+Строковые значения
+
+* **JSON**: string (unicode)
+
+  .. code-block:: javascript
+
+    {"\u043f\u0440\u0438\u0432\u0435\u0442": "\u043c\u0438\u0440"}
+
+* **UBJSON**: string (utf-8)
+
+  .. code-block:: text
+  
+    73 0C D0 BF D1 80 D0 B8 D0 B2 D0 B5 D1 82
+
+* **XML-RPC**: string (utf-8)
+
+  .. code-block:: xml
+
+    <string>привет, мир!</string>
+
+* **YAML**: string (unicode)
+
+  .. code-block:: xml
+
+    "\u043F\u0440\u0438\u0432\u0435\u0442": "\u043C\u0438\u0440"
+
+
+.. _type_array:
+
+================================================================================
+array
+================================================================================
+
+Список значений. Обычно, список может содержать множество значений разных типов,
+однако в нашем сервисе такой подход не применяется - все элементы всегда одного
+типа для избежания разночтений.
+
+* **JSON**:
+
+  .. code-block:: javascript
+
+    [1, 2, 3, 4, 5]
+
+* **UBJSON**:
+
+  * sized array
+
+    .. code-block:: text
+
+      61 05 01 02 03 04 05
+
+  * unsized array - в случае передачи ответа с HTTP заголовком
+    ``Transfer-Encoding: chunked``.
+
+    .. code-block:: text
+
+      61 FF 01 02 03 04 05 45
+  
+* **XML-RPC**:
+
+  .. code-block:: xml
+
+    <array>
+      <data>
+        <value><int>1</int></value>
+        <value><int>2</int></value>
+        <value><int>3</int></value>
+        <value><int>4</int></value>
+        <value><int>5</int></value>
+      </data>
+    </array>
+
+* **YAML**:
+
+  .. code-block:: yaml
+
+    - 1
+    - 2
+    - 3
+    - 4
+    - 5
+
+
+.. _type_object:
+
+================================================================================
+object
+================================================================================
+
+Набор пар ключ-значение, так же называемый ассоциативным или хэш массивом.
+Ключ всегда должен быть представлен строковым значением, но на значение не
+накладывается никаких ограничений.
+
+* **JSON**:
+
+  .. code-block:: javascript
+
+    {
+      "set": [
+        {"foo": null},
+        {"bar": []},
+        {"baz": {}},
+      ]
+    }
+
+* **UBJSON**:
+
+  * sized object
+
+    .. code-block:: text
+
+      6F 01 73 03 73 65 74 61 03 6F 01 73 03 66 6F 6F
+      5A 6F 01 73 03 62 61 72 61 00 6F 01 73 03 62 61
+      7A 6F 00
+
+  * unsized array - поток пар ключ-значение в случае передачи ответа с HTTP
+    заголовком ``Transfer-Encoding: chunked``.
+
+    .. code-block:: text
+
+      61 FF 61 02 73 03 73 65 74 61 03 6F 01 73 03 66
+      6F 6F 5A 6F 01 73 03 62 61 72 61 00 6F 01 73 03
+      62 61 7A 6F 00 45
+
+* **XML-RPC**:
+
+  .. code-block:: xml
+
+    <struct>
+      <member>
+        <name>set</name>
+        <value>
+          <array>
+            <data>
+              <value>
+                <struct>
+                  <member>
+                    <name>foo</name>
+                    <value><nil/></value>
+                  </member>
+                </struct>
+              </value>
+              <value>
+                <struct>
+                  <member>
+                    <name>bar</name>
+                    <value>
+                      <array>
+                        <data></data>
+                      </array>
+                    </value>
+                  </member>
+                </struct>
+              </value>
+              <value>
+                <struct>
+                  <member>
+                    <name>baz</name>
+                    <value>
+                      <struct></struct>
+                    </value>
+                  </member>
+                </struct>
+              </value>
+            </data>
+          </array>
+        </value>
+      </member>
+    </struct>
+
+* **YAML**:
+
+  .. code-block:: yaml
+
+    set:
+    - foo: null
+    - bar: []
+    - baz: {}
+
+
+.. _type_datetime:
+
+================================================================================
+datetime
+================================================================================
+
+Содержит значение даты и времени.
+
+* **JSON**: В спецификации JSON нет типа datetime, поэтому это всего лишь
+  соглашение, что за представление данного типа принимается строковое
+  представление даты-времени согласно стандарту
+  `ISO-8601 <http://en.wikipedia.org/wiki/ISO_8601>`_ в формате
+  `%Y-%m%-dT%H:%M:%S%z <http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html>`_.
+  Информация о локальной временной зоне указывается в формате ``{+,-}hh[:]mm``.
+
+  .. code-block:: javascript
+
+    {"U-day": "2009-02-14T02:31:30+03:00"}
+
+* **UBJSON**: Аналогично как и для JSON.
+
+  .. code-block:: text
+
+    73 19 32 30 30 39 2D 30 32 2D 31 33 54 32 33 3A
+    33 31 3A 33 30 2B 30 30 3A 30 30
+
+* **XML-RPC**:
+
+  .. code-block:: xml
+
+    <dateTime.iso8601>20090214T02:31:30</dateTime.iso8601>
+
+* **YAML**:
+
+  .. code-block:: yaml
+
+    U-day: 2009-02-13T21:31:30-0200
+
+
+.. _type_reference:
+
+================================================================================
+reference
+================================================================================
+
+Разновидность типа :ref:`type_string`. Значение этого типа не является чем-то
+особенным, а есть простое соглашение, что за строковым значением мы имеем ввиду
+`id` другого :term:`документа <doc>`, но не гарантируем его доступность.
+
+
+.. _type_decimal:
+
+================================================================================
+decimal
+================================================================================
+
+Данный тип является разновидностью типа :ref:`type_string` и призван
+представлять числа с фиксированной точкой, а так же сохранять их оригинальное
+значение, игнорируя специфику конечной системы по работе с дробными и большими
+числами. Значение данного типа должно удовлетворять формату представления чисел
+в JSON: ``^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][-+]?\d+)?$``.
+
+
+.. _type_dtarray:
+
+================================================================================
+dtarray
+================================================================================
+
+Разновидность типа :ref:`type_array`. Под этим типом подразумевается массив
+:ref:`чисел <type_number>`, составляющих тип :ref:`type_datetime` в следующей
+последовательности: [%Y, %m, %d, %H, %M, %S]. Используется для группировки
+результата ``view`` с разной степенью детализации.

docs/ddocs/all_docs.rst

+
+.. _ddoc.all_docs:
+
+================================================================================
+_design/all_docs
+================================================================================
+
+Данный :term:`ddoc` предоставляет общие функции доступа и работы с документами,
+внезависимости от их типа, информационного или функционального назначения.
+
+.. _all_docs/list/index:
+
+--------------------------------------------------------------------------------
+``list/index``
+--------------------------------------------------------------------------------
+
+Отображает оригинальный результат :term:`view` в различных
+:ref:`форматах <data.formats>`.
+
+* **Метод**: ``GET`` / ``POST``.
+* **Заголовки**: см. :ref:`ddoc.lists`
+* **Параметры запроса**: см. :ref:`ddoc.lists`
+* **Данные запроса**: см. :ref:`ddoc.lists`.
+
+В ответ будет получен результат выполнения :ref:`view-функции <ddoc.views>`,
+представленный в указанном формате(:ref:`format_json` по умолчанию).
+:ref:`Cтруктура <data.types>` данных остается неизменной.
+
+
+* **JSON**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_list/index/all_docs HTTP/1.1
+      Accept: application/json
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      Transfer-Encoding: chunked
+      Server: CouchDB/1.2.0 (Erlang OTP/R15B)
+      ETag: "1V170O61JC7OG4MVLYUCC3XHB"
+      Content-Type: application/json
+
+    .. code-block:: javascript
+
+      {
+        "total_rows":7,
+        "offset":0,
+        "rows":[
+          {
+            "id":"00026164d20fc1a6e981a43303a61169",
+            "key":"00026164d20fc1a6e981a43303a61169",
+            "value":{"rev":"2-fa1456ff18964fa9fd159bb922918e1b"}
+          },
+          {
+            "id":"4165d27a7bbeb7c03e7949610b004071",
+            "key":"4165d27a7bbeb7c03e7949610b004071",
+            "value":{"rev":"29-134ae46872e1a67b05eeb520803114f6"}
+          },
+          {
+            "id":"4165d27a7bbeb7c03e7949610b004077",
+            "key":"4165d27a7bbeb7c03e7949610b004077",
+            "value":{"rev":"26-1ba829985d6265f73fb54b5061ade1d3"}
+          },
+          {
+            "id":"5fd28c5a3cd6b21172f1c5a95e000ce0",
+            "key":"5fd28c5a3cd6b21172f1c5a95e000ce0",
+            "value":{"rev":"3-3dd16f62f0b32e8d1f60b6bd2bb61ff4"}
+          },
+          {
+            "id":"a183b4ff51ddd185fa93f02578050c51",
+            "key":"a183b4ff51ddd185fa93f02578050c51",
+            "value":{"rev":"1-8ce86a27e7d86228f69ed5dabda59d39"}
+          }
+        ]
+      }
+
+* **YAML**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_list/index/all_docs HTTP/1.1
+      Accept: application/x-yaml
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      Transfer-Encoding: chunked
+      Server: CouchDB/1.2.0 (Erlang OTP/R15B)
+      ETag: "1V170O61JC7OG4MVLYUCC3XHB"
+      Content-Type: application/x-yaml
+
+    .. code-block:: yaml
+
+       'offset': 0
+       'rows':
+      -  'id':  '00026164d20fc1a6e981a43303a61169'
+         'key':  '00026164d20fc1a6e981a43303a61169'
+         'value':
+           'rev':  '2-fa1456ff18964fa9fd159bb922918e1b'
+      -  'id':  '4165d27a7bbeb7c03e7949610b004071'
+         'key':  '4165d27a7bbeb7c03e7949610b004071'
+         'value':
+           'rev':  '29-134ae46872e1a67b05eeb520803114f6'
+      -  'id':  '4165d27a7bbeb7c03e7949610b004077'
+         'key':  '4165d27a7bbeb7c03e7949610b004077'
+         'value':
+           'rev':  '26-1ba829985d6265f73fb54b5061ade1d3'
+      -  'id':  '5fd28c5a3cd6b21172f1c5a95e000ce0'
+         'key':  '5fd28c5a3cd6b21172f1c5a95e000ce0'
+         'value':
+           'rev':  '3-3dd16f62f0b32e8d1f60b6bd2bb61ff4'
+      -  'id':  'a183b4ff51ddd185fa93f02578050c51'
+         'key':  'a183b4ff51ddd185fa93f02578050c51'
+         'value':
+           'rev':  '1-8ce86a27e7d86228f69ed5dabda59d39'
+       'total_rows': 7
+
+* **UBJSON**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_list/index/all_docs HTTP/1.1
+      Accept: application/x-ubjson
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      Transfer-Encoding: chunked
+      Server: CouchDB/1.2.0 (Erlang OTP/R15B)
+      ETag: "1V170O61JC7OG4MVLYUCC3XHB"
+      Content-Type: application/x-ubjson;base64
+
+    .. note::
+
+      Каждая строка ответа идет как отдельный chunk, поэтому для корректного
+      раскодирования необходимо сначала декодировать каждый chunk из `base64`,
+      собрать в единый поток данных без переносов строк и уже затем
+      раскодировать полученное сообщение как `UBJSON`. Все эти сложности -
+      следствие невозможности на данный момент отправлять бинарные данные из
+      :term:`list`-функций. Следить за данной проблемой можно по тикету
+      `COUCHDB-1465 <https://issues.apache.org/jira/browse/COUCHDB-1465>`_
+
+    .. code-block:: text
+
+      [o] [255]
+          [s] [4] [rows]
+          [a] [5]
+              [o] [3]
+                  [s] [5] [value]
+                  [o] [1]
+                      [s] [3] [rev]
+                      [s] [34] [2-fa1456ff18964fa9fd159bb922918e1b]
+                  [s] [2] [id]
+                  [s] [32] [00026164d20fc1a6e981a43303a61169]
+                  [s] [3] [key]
+                  [s] [32] [00026164d20fc1a6e981a43303a61169]
+              [o] [3]
+                  [s] [5] [value]
+                  [o] [1]
+                      [s] [3] [rev]
+                      [s] [35] [29-134ae46872e1a67b05eeb520803114f6]
+                  [s] [2] [id]
+                  [s] [32] [4165d27a7bbeb7c03e7949610b004071]
+                  [s] [3] [key]
+                  [s] [32] [4165d27a7bbeb7c03e7949610b004071]
+              [o] [3]
+                  [s] [5] [value]
+                  [o] [1]
+                      [s] [3] [rev]
+                      [s] [35] [26-1ba829985d6265f73fb54b5061ade1d3]
+                  [s] [2] [id]
+                  [s] [32] [4165d27a7bbeb7c03e7949610b004077]
+                  [s] [3] [key]
+                  [s] [32] [4165d27a7bbeb7c03e7949610b004077]
+              [o] [3]
+                  [s] [5] [value]
+                  [o] [1]
+                      [s] [3] [rev]
+                      [s] [34] [3-3dd16f62f0b32e8d1f60b6bd2bb61ff4]
+                  [s] [2] [id]
+                  [s] [32] [5fd28c5a3cd6b21172f1c5a95e000ce0]
+                  [s] [3] [key]
+                  [s] [32] [5fd28c5a3cd6b21172f1c5a95e000ce0]
+              [o] [3]
+                  [s] [5] [value]
+                  [o] [1]
+                      [s] [3] [rev]
+                      [s] [34] [1-8ce86a27e7d86228f69ed5dabda59d39]
+                  [s] [2] [id]
+                  [s] [32] [a183b4ff51ddd185fa93f02578050c51]
+                  [s] [3] [key]
+                  [s] [32] [a183b4ff51ddd185fa93f02578050c51]
+          [s] [10] [total_rows]
+          [B] [7]
+          [s] [6] [offset]
+          [B] [0]
+      [E]
+
+* **XML-RPC**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_list/index/all_docs HTTP/1.1
+      Accept: application/xml+rpc
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      Transfer-Encoding: chunked
+      Server: CouchDB/1.2.0 (Erlang OTP/R15B)
+      ETag: "1V170O61JC7OG4MVLYUCC3XHB"
+      Content-Type: application/xml+rpc
+
+    .. code-block:: xml
+
+      <?xml version="1.0" encoding="utf-8"?>
+      <params>
+        <param>
+          <value>
+            <struct>
+              <member>
+                <name>
+                  rows
+                </name>
+                <value>
+                  <array>
+                    <data>
+                      <value>
+                        <struct>
+                          <member>
+                            <name>
+                              value
+                            </name>
+                            <value>
+                              <struct>
+                                <member>
+                                  <name>
+                                    rev
+                                  </name>
+                                  <value>
+                                    <string>
+                                      2-fa1456ff18964fa9fd159bb922918e1b
+                                    </string>
+                                  </value>
+                                </member>
+                              </struct>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              id
+                            </name>
+                            <value>
+                              <string>
+                                00026164d20fc1a6e981a43303a61169
+                              </string>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              key
+                            </name>
+                            <value>
+                              <string>
+                                00026164d20fc1a6e981a43303a61169
+                              </string>
+                            </value>
+                          </member>
+                        </struct>
+                      </value>
+                      <value>
+                        <struct>
+                          <member>
+                            <name>
+                              value
+                            </name>
+                            <value>
+                              <struct>
+                                <member>
+                                  <name>
+                                    rev
+                                  </name>
+                                  <value>
+                                    <string>
+                                      29-134ae46872e1a67b05eeb520803114f6
+                                    </string>
+                                  </value>
+                                </member>
+                              </struct>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              id
+                            </name>
+                            <value>
+                              <string>
+                                4165d27a7bbeb7c03e7949610b004071
+                              </string>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              key
+                            </name>
+                            <value>
+                              <string>
+                                4165d27a7bbeb7c03e7949610b004071
+                              </string>
+                            </value>
+                          </member>
+                        </struct>
+                      </value>
+                      <value>
+                        <struct>
+                          <member>
+                            <name>
+                              value
+                            </name>
+                            <value>
+                              <struct>
+                                <member>
+                                  <name>
+                                    rev
+                                  </name>
+                                  <value>
+                                    <string>
+                                      26-1ba829985d6265f73fb54b5061ade1d3
+                                    </string>
+                                  </value>
+                                </member>
+                              </struct>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              id
+                            </name>
+                            <value>
+                              <string>
+                                4165d27a7bbeb7c03e7949610b004077
+                              </string>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              key
+                            </name>
+                            <value>
+                              <string>
+                                4165d27a7bbeb7c03e7949610b004077
+                              </string>
+                            </value>
+                          </member>
+                        </struct>
+                      </value>
+                      <value>
+                        <struct>
+                          <member>
+                            <name>
+                              value
+                            </name>
+                            <value>
+                              <struct>
+                                <member>
+                                  <name>
+                                    rev
+                                  </name>
+                                  <value>
+                                    <string>
+                                      3-3dd16f62f0b32e8d1f60b6bd2bb61ff4
+                                    </string>
+                                  </value>
+                                </member>
+                              </struct>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              id
+                            </name>
+                            <value>
+                              <string>
+                                5fd28c5a3cd6b21172f1c5a95e000ce0
+                              </string>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              key
+                            </name>
+                            <value>
+                              <string>
+                                5fd28c5a3cd6b21172f1c5a95e000ce0
+                              </string>
+                            </value>
+                          </member>
+                        </struct>
+                      </value>
+                      <value>
+                        <struct>
+                          <member>
+                            <name>
+                              value
+                            </name>
+                            <value>
+                              <struct>
+                                <member>
+                                  <name>
+                                    rev
+                                  </name>
+                                  <value>
+                                    <string>
+                                      1-8ce86a27e7d86228f69ed5dabda59d39
+                                    </string>
+                                  </value>
+                                </member>
+                              </struct>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              id
+                            </name>
+                            <value>
+                              <string>
+                                a183b4ff51ddd185fa93f02578050c51
+                              </string>
+                            </value>
+                          </member>
+                          <member>
+                            <name>
+                              key
+                            </name>
+                            <value>
+                              <string>
+                                a183b4ff51ddd185fa93f02578050c51
+                              </string>
+                            </value>
+                          </member>
+                        </struct>
+                      </value>
+                    </data>
+                  </array>
+                </value>
+              </member>
+              <member>
+                <name>
+                  total_rows
+                </name>
+                <value>
+                  <int>
+                    7
+                  </int>
+                </value>
+              </member>
+              <member>
+                <name>
+                  offset
+                </name>
+                <value>
+                  <int>
+                    0
+                  </int>
+                </value>
+              </member>
+            </struct>
+          </value>
+        </param>
+      </params>
+
+
+.. _all_docs/show/doc:
+
+--------------------------------------------------------------------------------
+``show/doc``
+--------------------------------------------------------------------------------
+
+Отображает данные документа в различных :ref:`форматах <data.formats>`.
+
+* **Метод**: ``GET``
+* **Заголовки запроса**: см. :ref:`ddoc.shows`
+* **Параметры запроса**: см. :ref:`ddoc.shows`
+
+В ответ будет получен :term:`документ <doc>` представленный в указанном формате
+(:ref:`format_json` по умолчанию). :ref:`Cтруктура <data.types>` данных остается
+неизменной.
+
+
+* **JSON**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_show/doc/a183b4ff51ddd185fa93f02578050c51 HTTP/1.1
+      Accept: application/json
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      ETag: "1DCN0TP3WMPARDV9488D8CCI3"
+      Content-Type: application/json
+      Content-Length: 345
+
+    .. code-block:: javascript
+
+      {
+        ".meta": {
+          "created_at": "2012-03-20T12:16:31+00:00",
+          "updated_at": "2012-03-20T12:16:31+00:00",
+          "timestamp": 1332245791.227708,
+          "author": "Mike",
+          "user": "Mike",
+          "peer": "127.0.0.1",
+          "type": "generic"
+        },
+        "_id": "a183b4ff51ddd185fa93f02578050c51",
+        "_rev": "1-8ce86a27e7d86228f69ed5dabda59d39",
+        "_revisions": {
+          "start": 1,
+          "ids": ["8ce86a27e7d86228f69ed5dabda59d39"]
+        }
+      }
+
+* **YAML**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_show/doc/a183b4ff51ddd185fa93f02578050c51 HTTP/1.1
+      Accept: application/x-yaml
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      ETag: "1DCN0TP3WMPARDV9488D8CCI3"
+      Content-Type: application/x-yaml
+      Content-Length: 398
+
+    .. code-block:: yaml
+
+     '.meta':
+       'author':  'Mike'
+       'created_at':  '2012-03-20T12:16:31+00:00'
+       'peer':  '127.0.0.1'
+       'timestamp': 1332245791.227708
+       'type':  'generic'
+       'updated_at':  '2012-03-20T12:16:31+00:00'
+       'user':  'Mike'
+     '_id':  'a183b4ff51ddd185fa93f02578050c51'
+     '_rev':  '1-8ce86a27e7d86228f69ed5dabda59d39'
+     '_revisions':
+       'ids':
+      -  '8ce86a27e7d86228f69ed5dabda59d39'
+       'start': 1
+
+* **UBJSON**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_show/doc/a183b4ff51ddd185fa93f02578050c51 HTTP/1.1
+      Accept: application/x-ubjson
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      ETag: "1DCN0TP3WMPARDV9488D8CCI3"
+      Content-Type: application/x-ubjson
+      Content-Length: 314
+
+    .. code-block:: text
+
+      [o] [4]
+          [s] [5] [.meta]
+          [o] [7]
+              [s] [6] [author]
+              [s] [7] [Mike]
+              [s] [9] [timestamp]
+              [d] [1332245760.0]
+              [s] [10] [created_at]
+              [s] [25] [2012-03-20T12:16:31+00:00]
+              [s] [10] [updated_at]
+              [s] [25] [2012-03-20T12:16:31+00:00]
+              [s] [4] [user]
+              [s] [7] [Mike]
+              [s] [4] [peer]
+              [s] [9] [127.0.0.1]
+              [s] [4] [type]
+              [s] [7] [generic]
+          [s] [10] [_revisions]
+          [o] [2]
+              [s] [5] [start]
+              [B] [1]
+              [s] [3] [ids]
+              [a] [1]
+                  [s] [32] [8ce86a27e7d86228f69ed5dabda59d39]
+          [s] [4] [_rev]
+          [s] [34] [1-8ce86a27e7d86228f69ed5dabda59d39]
+          [s] [3] [_id]
+          [s] [32] [a183b4ff51ddd185fa93f02578050c51]
+
+* **XML-RPC**
+
+  * **Запрос**
+
+    .. code-block:: text
+
+      GET /db/_design/all_docs/_show/doc/a183b4ff51ddd185fa93f02578050c51 HTTP/1.1
+      Accept: application/xml+rpc
+
+  * **Ответ**
+
+    .. code-block:: text
+
+      HTTP/1.1 200 OK
+      ETag: "1DCN0TP3WMPARDV9488D8CCI3"
+      Content-Type: application/xml+rpc
+      Content-Length: 1281
+
+    .. code-block:: xml
+
+      <?xml version="1.0" encoding="utf-8"?>
+      <params>
+        <param>
+          <value>
+            <struct>
+              <member>
+                <name>
+                  .meta
+                </name>
+                <value>
+                  <struct>
+                    <member>
+                      <name>
+                        author
+                      </name>
+                      <value>
+                        <string>
+                          Mike
+                        </string>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        timestamp
+                      </name>
+                      <value>
+                        <double>
+                          1332245791.227708
+                        </double>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        created_at
+                      </name>
+                      <value>
+                        <string>
+                          2012-03-20T12:16:31+00:00
+                        </string>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        updated_at
+                      </name>
+                      <value>
+                        <string>
+                          2012-03-20T12:16:31+00:00
+                        </string>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        user
+                      </name>
+                      <value>
+                        <string>
+                          Mike
+                        </string>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        peer
+                      </name>
+                      <value>
+                        <string>
+                          127.0.0.1
+                        </string>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        type
+                      </name>
+                      <value>
+                        <string>
+                          generic
+                        </string>
+                      </value>
+                    </member>
+                  </struct>
+                </value>
+              </member>
+              <member>
+                <name>
+                  _revisions
+                </name>
+                <value>
+                  <struct>
+                    <member>
+                      <name>
+                        start
+                      </name>
+                      <value>
+                        <int>
+                          1
+                        </int>
+                      </value>
+                    </member>
+                    <member>
+                      <name>
+                        ids
+                      </name>
+                      <value>
+                        <array>
+                          <data>
+                            <value>
+                              <string>
+                                8ce86a27e7d86228f69ed5dabda59d39
+                              </string>
+                            </value>
+                          </data>
+                        </array>
+                      </value>
+                    </member>
+                  </struct>
+                </value>
+              </member>
+              <member>
+                <name>
+                  _rev
+                </name>
+                <value>
+                  <string>
+                    1-8ce86a27e7d86228f69ed5dabda59d39
+                  </string>
+                </value>
+              </member>
+              <member>
+                <name>
+                  _id
+                </name>
+                <value>
+                  <string>
+                    a183b4ff51ddd185fa93f02578050c51
+                  </string>
+                </value>
+              </member>
+            </struct>
+          </value>
+        </param>
+      </params>
+
+
+.. _all_docs/update/doc:
+
+--------------------------------------------------------------------------------
+``update/doc``
+--------------------------------------------------------------------------------
+
+Создает новый или обновляет текущий документ, замещая его содержимое данными
+запроса. Помимо дублирования функционала стандартного создания документа
+средствами CouchDB, так же производится  обновление
+:ref:`метаинформации <docs.meta>` и :ref:`версионирование <docs.version.data>`
+данных.
+
+* **Метод**: ``POST`` / ``PUT``
+* **Заголовки**: см. :ref:`ddoc.updates`
+* **Данные запроса** (:ref:`type_object`): Данные документа. Если документ
+  отсутствует, то он будет автоматически создан на основании переданных данных,
+  в противном случае его содержимое будет заменено ими.
+
+.. code-block:: text
+
+  POST /db/_design/all_docs/_update/doc HTTP/1.1
+  Accept: application/json
+
+.. code-block:: javascript
+
+  {
+    "numbers": [1, 2, 3, 4]
+  }
+
+
+В случае успешного создания документа, будет возвращен ответ с указанием ``_id``
+нового или обновленного документа.
+
+* **HTTP 201**:
+
+  * **Заголовки**:
+
+    * **Content-Type**: Тип возвращаемых данных, зависит от значения переданного
+      заголовка ``Accept``. По умолчанию :ref:`format_JSON`.
+    * **X-Couch-Update-NewRev**: Номер новой ревизии документа.
+
+  * **Данные ответа** (:ref:`type_object`):
+
+    * **id** (:ref:`type_string`): ID документа.
+    * **status** (:ref:`type_string`): ``ok``
+
+.. code-block:: text
+
+  HTTP/1.1 201 Created
+  X-Couch-Update-NewRev: 1-8ce86a27e7d86228f69ed5dabda59d39
+  Content-Type: application/json
+  Content-Length: 55
+
+.. code-block:: javascript
+
+  {
+    "id": "d4b2e6c6cf344d15a203f465b4b33384",
+    "status": "ok"
+  }
+
+Если переданные данные не были :ref:`объектом <type_object>`, то будет
+возвращена ошибка.
+
+* **HTTP 400**:
+
+  * **Заголовки**:
+
+    * **Content-Type**: ``application/json``
+
+  * **Данные ответа** (:ref:`type_object`):
+
+    * **error** (:ref:`type_string`): Тип ошибки.
+    * **reason** (:ref:`type_string`): Причина ошибки.
+
+.. code-block:: text
+
+  POST /db/_design/all_docs/_update/doc HTTP/1.1
+  Accept: application/json
+
+.. code-block:: javascript
+
+  [
+    {"numbers": [1, 2, 3, 4]}
+  ]
+
+.. code-block:: text
+
+  HTTP/1.1 400 Bad Request