Remove port 5986 references + related options
diff --git a/src/api/server/configuration.rst b/src/api/server/configuration.rst
index 9c2d61e..e46769e 100644
--- a/src/api/server/configuration.rst
+++ b/src/api/server/configuration.rst
@@ -162,8 +162,7 @@
             "default_handler": "{couch_httpd_db, handle_request}",
             "enable_cors": "false",
             "port": "5984",
-            "secure_rewrites": "true",
-            "vhost_global_handlers": "_utils, _uuids, _session, _users"
+            "secure_rewrites": "true"
         }
 
 .. _api/config/section/key:
diff --git a/src/cluster/databases.rst b/src/cluster/databases.rst
index 09876d0..1dcbc2b 100644
--- a/src/cluster/databases.rst
+++ b/src/cluster/databases.rst
@@ -56,9 +56,10 @@
     Use of the ``placement`` argument will **override** the standard
     logic for shard replica cardinality (specified by ``[cluster] n``.)
 
-First, each node must be labeled with a zone attribute. This defines which
-zone each node is in. You do this by editing the node's document in the
-``/nodes`` database, which is accessed through the "back-door" (5986) port.
+First, each node must be labeled with a zone attribute. This defines which zone each node
+is in. You do this by editing the node's document in the system ``_nodes`` database, which
+is accessed node-local via the ``GET /_node/_local/_nodes/{node-name}`` endpoint.
+
 Add a key value pair of the form:
 
 .. code-block:: text
diff --git a/src/cluster/nodes.rst b/src/cluster/nodes.rst
index 3028a92..fac8262 100644
--- a/src/cluster/nodes.rst
+++ b/src/cluster/nodes.rst
@@ -44,7 +44,7 @@
 
 .. code-block:: text
 
-    curl -X PUT "http://xxx.xxx.xxx.xxx:5986/_nodes/node2@yyy.yyy.yyy.yyy" -d {}
+    curl -X PUT "http://xxx.xxx.xxx.xxx/_node/_local/_nodes/node2@yyy.yyy.yyy.yyy" -d {}
 
 Now look at ``http://server1:5984/_membership`` again.
 
@@ -79,11 +79,11 @@
 
 .. code-block:: text
 
-    curl "http://xxx.xxx.xxx.xxx:5986/_nodes/node2@yyy.yyy.yyy.yyy"
+    curl "http://xxx.xxx.xxx.xxx/_node/_local/_nodes/node2@yyy.yyy.yyy.yyy"
     {"_id":"node2@yyy.yyy.yyy.yyy","_rev":"1-967a00dff5e02add41820138abb3284d"}
 
 With that ``_rev``, you can now proceed to delete the node document:
 
 .. code-block:: text
 
-    curl -X DELETE "http://xxx.xxx.xxx.xxx:5986/_nodes/node2@yyy.yyy.yyy.yyy?rev=1-967a00dff5e02add41820138abb3284d"
+    curl -X DELETE "http://xxx.xxx.xxx.xxx/_node/_local/_nodes/node2@yyy.yyy.yyy.yyy?rev=1-967a00dff5e02add41820138abb3284d"
diff --git a/src/cluster/sharding.rst b/src/cluster/sharding.rst
index 8eac181..a3075dc 100644
--- a/src/cluster/sharding.rst
+++ b/src/cluster/sharding.rst
@@ -107,13 +107,13 @@
 
 .. code-block:: bash
 
-    $ curl "$COUCH_URL:5984/<db>/<doc>?r=2"
+    $ curl "$COUCH_URL:5984/{db}/{doc}?r=2"
 
 Here is a similar example for writing a document:
 
 .. code-block:: bash
 
-    $ curl -X PUT "$COUCH_URL:5984/<db>/<doc>?w=2" -d '{...}'
+    $ curl -X PUT "$COUCH_URL:5984/{db}/{doc}?w=2" -d '{...}'
 
 Setting ``r`` or ``w`` to be equal to ``n`` (the number of replicas)
 means you will only receive a response once all nodes with relevant
@@ -336,13 +336,13 @@
 .. code-block:: bash
 
     # one one machine
-    $ mkdir -p data/.shards/<range>
-    $ mkdir -p data/shards/<range>
+    $ mkdir -p data/.shards/{range}
+    $ mkdir -p data/shards/{range}
     # on the other
-    $ scp <couch-dir>/data/.shards/<range>/<database>.<datecode>* \
-      <node>:<couch-dir>/data/.shards/<range>/
-    $ scp <couch-dir>/data/shards/<range>/<database>.<datecode>.couch \
-      <node>:<couch-dir>/data/shards/<range>/
+    $ scp {couch-dir}/data/.shards/{range}/{database}.{datecode}* \
+      {node}:{couch-dir}/data/.shards/{range}/
+    $ scp {couch-dir}/data/shards/{range}/{database}.{datecode}.couch \
+      {node}:{couch-dir}/data/shards/{range}/
 
 .. note::
     Remember to move view files before database files! If a view index
@@ -379,7 +379,7 @@
 .. code-block:: bash
 
     $ curl -X PUT -H "Content-type: application/json" \
-        $COUCH_URL:5984/_node/<nodename>/_config/couchdb/maintenance_mode \
+        $COUCH_URL:5984/_node/{node-name}/_config/couchdb/maintenance_mode \
         -d "\"true\""
 
 Then, verify that the node is in maintenance mode by performing a ``GET
@@ -407,15 +407,14 @@
 
 To update the cluster metadata, use the special ``/_dbs`` database,
 which is an internal CouchDB database that maps databases to shards and
-nodes. This database is replicated between nodes. It is accessible only
-via a node-local port, usually at port 5986. By default, this port is
-only available on the localhost interface for security purposes.
+nodes. This database is automatically replicated between nodes. It is accessible
+only through the special ``/_node/_local/_dbs`` endpoint.
 
 First, retrieve the database's current metadata:
 
 .. code-block:: bash
 
-    $ curl http://localhost:5986/_dbs/{name}
+    $ curl http://localhost/_node/_local/_dbs/{name}
     {
       "_id": "{name}",
       "_rev": "1-e13fb7e79af3b3107ed62925058bfa3a",
@@ -471,11 +470,11 @@
 
 .. code-block:: javascript
 
-    ["add", "<range>", "<node-name>"]
+    ["add", "{range}", "{node-name}"]
 
-The ``<range>`` is the specific shard range for the shard. The ``<node-
-name>`` should match the name and address of the node as displayed in
-``GET /_membership`` on the cluster.
+The ``{range}`` is the specific shard range for the shard. The ``{node-name}``
+should match the name and address of the node as displayed in ``GET
+/_membership`` on the cluster.
 
 .. note::
     When removing a shard from a node, specify ``remove`` instead of ``add``.
@@ -526,7 +525,7 @@
 
 .. code-block:: bash
 
-    $ curl -X PUT http://localhost:5986/_dbs/{name} -d '{...}'
+    $ curl -X PUT http://localhost/_node/_local/_dbs/{name} -d '{...}'
 
 .. _cluster/sharding/sync:
 
@@ -541,7 +540,7 @@
 
 .. code-block:: bash
 
-    $ curl -X POST $COUCH_URL:5984/{dbname}/_sync_shards
+    $ curl -X POST $COUCH_URL:5984/{db}/_sync_shards
     {"ok":true}
 
 This starts the synchronization process. Note that this will put
@@ -562,7 +561,7 @@
 
 After you complete the previous step, CouchDB will have started
 synchronizing the shards. You can observe this happening by monitoring
-the ``/_node/<nodename>/_system`` endpoint, which includes the
+the ``/_node/{node-name}/_system`` endpoint, which includes the
 ``internal_replication_jobs`` metric.
 
 Once this metric has returned to the baseline from before you started
@@ -591,7 +590,7 @@
 
 Now, remove the source shard from the shard map the same way that you
 added the new target shard to the shard map in step 2. Be sure to add
-the ``["remove", <range>, <source-shard>]`` entry to the end of the
+the ``["remove", {range}, {source-shard}]`` entry to the end of the
 changelog as well as modifying both the ``by_node`` and ``by_range`` sections of
 the database metadata document.
 
@@ -605,8 +604,8 @@
 
 .. code-block:: bash
 
-    $ rm <couch-dir>/data/shards/<range>/<dbname>.<datecode>.couch
-    $ rm -r <couch-dir>/data/.shards/<range>/<dbname>.<datecode>*
+    $ rm {couch-dir}/data/shards/{range}/{db}.{datecode}.couch
+    $ rm -r {couch-dir}/data/.shards/{range}/{db}.{datecode}*
 
 Congratulations! You have moved a database shard replica. By adding and removing
 database shard replicas in this way, you can change the cluster's shard layout,
@@ -623,10 +622,11 @@
     Use of the ``placement`` option will **override** the ``n`` option,
     both in the ``.ini`` file as well as when specified in a ``URL``.
 
-First, each node must be labeled with a zone attribute. This defines
-which zone each node is in. You do this by editing the node’s document
-in the ``/_nodes`` database, which is accessed through the node-local
-port. Add a key value pair of the form:
+First, each node must be labeled with a zone attribute. This defines which zone
+each node is in. You do this by editing the node’s document in the special
+``/_nodes`` database, which is accessed through the special node-local API
+endpoint at ``/_node/_local/_nodes/{node-name}``. Add a key value pair of the
+form:
 
 ::
 
@@ -636,11 +636,11 @@
 
 .. code-block:: bash
 
-    $ curl -X PUT http://localhost:5986/_nodes/<node-name> \
+    $ curl -X PUT http://localhost/_node/_local/_nodes/{node-name} \
         -d '{ \
-            "_id": "<node-name>",
-            "_rev": "<rev>",
-            "zone": "<zone-name>"
+            "_id": "{node-name}",
+            "_rev": "{rev}",
+            "zone": "{zone-name}"
             }'
 
 In the local config file (``local.ini``) of each node, define a
@@ -649,12 +649,12 @@
 ::
 
     [cluster]
-    placement = <zone-name-1>:2,<zone-name-2>:1
+    placement = {zone-name-1}:2,{zone-name-2}:1
 
 In this example, CouchDB will ensure that two replicas for a shard will
-be hosted on nodes with the zone attribute set to ``<zone-name-1>`` and
+be hosted on nodes with the zone attribute set to ``{zone-name-1}`` and
 one replica will be hosted on a new with the zone attribute set to
-``<zone-name-2>``.
+``{zone-name-2}``.
 
 This approach is flexible, since you can also specify zones on a per-
 database basis by specifying the placement setting as a query parameter
@@ -662,7 +662,7 @@
 
 .. code-block:: bash
 
-    curl -X PUT $COUCH_URL:5984/<dbname>?zone=<zone>
+    curl -X PUT $COUCH_URL:5984/{db}?zone={zone}
 
 The ``placement`` argument may also be specified. Note that this *will*
 override the logic that determines the number of created replicas!
diff --git a/src/config/auth.rst b/src/config/auth.rst
index 06c532c..d4dad85 100644
--- a/src/config/auth.rst
+++ b/src/config/auth.rst
@@ -119,11 +119,6 @@
             [chttpd]
             require_valid_user = false
 
-        .. note::
-            This setting only affects the clustered-port (5984 by default).
-            To make the same change for the node-local port (5986 by default),
-            set the ``[couch_httpd_auth]`` setting of the same name.
-
     .. config:option:: require_valid_user_except_for_up :: Force user auth (mostly)
 
         When this option is set to ``true``, no requests are allowed from
@@ -180,10 +175,6 @@
             [couch_httpd_auth]
             authentication_redirect = /_utils/session.html
 
-        .. note::
-            This setting affects both the clustered-port (5984 by default)
-            and the node-local port (5986 by default).
-
     .. config:option:: iterations :: PBKDF2 iterations count
 
         .. versionadded:: 1.3
@@ -252,11 +243,6 @@
             [couch_httpd_auth]
             require_valid_user = false
 
-        .. warning::
-            This setting only affects the node-local port (5986 by default).
-            Most administrators want the ``[chttpd]`` setting of the same name
-            for clustered-port (5984) behaviour.
-
     .. config:option:: secret :: Authentication secret token
 
         The secret token is used for :ref:`api/auth/proxy` and for :ref:`api/auth/cookie`. ::
@@ -283,10 +269,6 @@
             [couch_httpd_auth]
             users_db_public = false
 
-        .. note::
-            This setting affects both the clustered-port (5984 by default)
-            and the node-local port (5986 by default).
-
     .. config:option:: x_auth_roles :: Proxy Auth roles header
 
         The HTTP header name (``X-Auth-CouchDB-Roles`` by default) that
diff --git a/src/config/http.rst b/src/config/http.rst
index 3e380a2..fd94757 100644
--- a/src/config/http.rst
+++ b/src/config/http.rst
@@ -29,6 +29,8 @@
     port. All use of CouchDB, aside from a few specific maintenance tasks as
     described in this documentation, should be performed over this port.
 
+    .. config:option:: bind_address :: HTTP port IP address binding
+
         Defines the IP address by which the clustered port is available::
 
             [chttpd]
@@ -93,13 +95,6 @@
 
 .. config:section:: httpd :: HTTP Server Options
 
-.. warning::
-    In CouchDB 2.x, the `httpd` section mostly refers to the node-local port,
-    on port 5986 by default. This port is used only for maintenance and
-    administrative tasks. **It should not be used for regular CouchDB access**,
-    and for security reasons, **should always be bound to localhost**
-    (`127.0.0.1`) or a private LAN segment only.
-
     .. config:option:: allow_jsonp :: Enables JSONP support
 
         The ``true`` value of this option enables `JSONP`_ support (it's
@@ -110,20 +105,6 @@
 
         .. _JSONP: https://en.wikipedia.org/wiki/JSONP
 
-    .. config:option:: bind_address :: Listen IP address
-
-        Defines the IP address by which the node-local port is available.
-        The recommended setting is always::
-
-            [httpd]
-            bind_address = 127.0.0.1
-
-        For IPv6 support you need to set `::1` if you want to let CouchDB
-        listen correctly::
-
-            [httpd]
-            bind_address = ::1
-
     .. config:option:: changes_timeout :: Changes feed timeout
 
         Specifies default `timeout` value for :ref:`Changes Feed <changes>` in
@@ -143,13 +124,6 @@
             [httpd]
             config_whitelist = [{httpd,config_whitelist}, {log,level}, {etc,etc}]
 
-    .. config:option:: default_handler :: Default request handler
-
-        Specifies default HTTP requests handler::
-
-            [httpd]
-            default_handler = {couch_httpd_db, handle_request}
-
     .. config:option:: enable_cors :: Activates CORS
 
         .. versionadded:: 1.3
@@ -159,38 +133,19 @@
             [httpd]
             enable_cors = false
 
-    .. config:option:: port :: Listen port
-
-        Defines the port number to listen::
-
-            [httpd]
-            port = 5986
-
-        To let CouchDB use any free port, set this option to ``0``::
-
-            [httpd]
-            port = 0
-
-    .. config:option:: redirect_vhost_handler :: Virtual Hosts custom redirect handler
-
-        This option customizes the default function that handles requests to
-        :section:`virtual hosts <vhosts>`::
-
-            [httpd]
-            redirect_vhost_handler = {Module, Fun}
-
-        The specified function take 2 arguments: the MochiWeb request object
-        and the target path.
-
     .. config:option:: server_options :: MochiWeb Server Options
 
-        Server options for the `MochiWeb`_ component of CouchDB can be added to
+        Server options for the MochiWeb component of CouchDB can be added to
         the configuration files::
 
             [httpd]
             server_options = [{backlog, 128}, {acceptor_pool_size, 16}]
 
-        .. _MochiWeb: https://github.com/mochi/mochiweb
+        The options supported are a subset of full options supported by the
+        TCP/IP stack. A list of the supported options are provided in the
+        `Erlang inet`_ documentation.
+
+        .. _Erlang inet: http://www.erlang.org/doc/man/inet.html#setopts-2
 
     .. config:option:: secure_rewrites :: Default request handler
 
@@ -205,7 +160,7 @@
         beginning of ever request, can be specified as a list of tuples. For example::
 
             [httpd]
-            socket_options = [{sndbuf, 262144}, {nodelay, true}]
+            socket_options = [{sndbuf, 262144}]
 
         The options supported are a subset of full options supported by the
         TCP/IP stack. A list of the supported options are provided in the
@@ -213,28 +168,6 @@
 
         .. _Erlang inet: http://www.erlang.org/doc/man/inet.html#setopts-2
 
-    .. config:option:: server_options :: Socket Options
-
-        The server options for any socket in the mochiweb acceptor pool in CouchDB
-        can be specified as a list of tuples. For example::
-
-            [httpd]
-            server_options = [{recbuf, undefined}]
-
-        The options supported are a subset of full options supported by the
-        TCP/IP stack. A list of the supported options are provided in the
-        `Erlang inet`_ documentation.
-
-        .. _Erlang inet: http://www.erlang.org/doc/man/inet.html#setopts-2
-
-    .. config:option:: vhost_global_handlers :: Virtual hosts global handlers
-
-        List of global handlers that are available for :section:`virtual hosts
-        <vhosts>`::
-
-            [httpd]
-            vhost_global_handlers = _utils, _uuids, _session, _users
-
     .. config:option:: x_forwarded_host :: X-Forwarder-Host
 
         The `x_forwarded_host` header (``X-Forwarded-Host`` by default) is used
@@ -275,13 +208,6 @@
             [httpd]
             enable_xframe_options = false
 
-    .. config:option:: WWW-Authenticate :: Force basic auth
-
-        Set this option to trigger basic-auth pop-up on unauthorized requests::
-
-            [httpd]
-            WWW-Authenticate = Basic realm="Welcome to the Couch!"
-
     .. config:option:: max_http_request_size :: Maximum HTTP request body size
 
         .. versionchanged:: 2.1.0
@@ -683,9 +609,6 @@
 but uses a variable name. And the third one allows you to use any URL with
 `ddocname` in any database with `dbname`.
 
-You could also change the default function to handle request by changing the
-setting :option:`httpd/redirect_vhost_handler`.
-
 .. _xframe_options:
 .. _config/xframe_options:
 
diff --git a/src/config/index.rst b/src/config/index.rst
index fab14ce..7b5f1ba 100644
--- a/src/config/index.rst
+++ b/src/config/index.rst
@@ -31,6 +31,5 @@
     logging
     replicator
     query-servers
-    services
     misc
     resharding
diff --git a/src/config/intro.rst b/src/config/intro.rst
index 2cf2ba2..bab3796 100644
--- a/src/config/intro.rst
+++ b/src/config/intro.rst
@@ -37,7 +37,7 @@
 the ``local.ini`` and ``local.d`` directories.
 
 Settings in successive documents override the settings in earlier entries.
-For example, setting the :option:`httpd/bind_address` parameter in
+For example, setting the :option:`chttpd/bind_address` parameter in
 ``local.ini`` would override any setting in ``default.ini``.
 
 .. warning::
@@ -146,9 +146,9 @@
 
 You should be careful changing configuration via the HTTP API since it's
 possible  to make CouchDB unreachable, for example, by changing the
-:option:`httpd/bind_address`::
+:option:`chttpd/bind_address`::
 
-    curl -X PUT http://localhost:5984/_node/<name@host>/_config/httpd/bind_address -d '"10.10.0.128"'
+    curl -X PUT http://localhost:5984/_node/<name@host>/_config/chttpd/bind_address -d '"10.10.0.128"'
 
 If you make a typo or the specified IP address is not available from your
 network, CouchDB will be unreachable. The only way to resolve this will be
diff --git a/src/config/services.rst b/src/config/services.rst
deleted file mode 100644
index 100bcd4..0000000
--- a/src/config/services.rst
+++ /dev/null
@@ -1,101 +0,0 @@
-.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
-.. use this file except in compliance with the License. You may obtain a copy of
-.. the License at
-..
-..   http://www.apache.org/licenses/LICENSE-2.0
-..
-.. Unless required by applicable law or agreed to in writing, software
-.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-.. License for the specific language governing permissions and limitations under
-.. the License.
-
-.. highlight:: ini
-
-=========================
-CouchDB Internal Services
-=========================
-
-.. _config/daemons:
-
-CouchDB Daemonized Mini Apps
-============================
-
-.. config:section:: daemons :: CouchDB Daemonized Mini Apps
-
-    .. config:option:: auth_cache
-
-        This daemon provides authentication caching to avoid repeated opening
-        and closing of the `_users` database for each request requiring
-        authentication::
-
-            [daemons]
-            auth_cache={couch_auth_cache, start_link, []}
-
-    .. config:option:: external_manager
-
-        `External` processes manager::
-
-            [daemons]
-            external_manager={couch_external_manager, start_link, []}
-
-    .. config:option:: httpd
-
-        Node-local HTTP server daemon (default port: `5986`)::
-
-            [daemons]
-            httpd={couch_httpd, start_link, []}
-
-    .. config:option:: index_server
-
-        The `couch_index` application is responsible for managing all of the
-        different types of indexers. This manages the process handling for
-        keeping track of the index state as well as managing the updater and
-        compactor handling::
-
-            [daemons]
-            index_server={couch_index_server, start_link, []}
-
-    .. config:option:: query_servers
-
-        :ref:`Query servers <config/query_servers>` manager::
-
-            [daemons]
-            query_servers={couch_query_servers, start_link, []}
-
-    .. config:option:: replicator_manager
-
-        Replications manager::
-
-            [daemons]
-            replicator_manager={couch_replicator_manager, start_link, []}
-
-    .. config:option:: stats_aggregator
-
-        Runtime statistics aggregator::
-
-            [daemons]
-            stats_aggregator={couch_stats_aggregator, start, []}
-
-    .. config:option:: stats_collector
-
-        Runtime statistics collector::
-
-            [daemons]
-            stats_collector={couch_stats_collector, start, []}
-
-    .. config:option:: uuids
-
-        :ref:`UUIDs <config/uuids>` generator daemon::
-
-            [daemons]
-            uuids={couch_uuids, start, []}
-
-    .. config:option:: vhosts
-
-        :ref:`Virtual hosts <config/vhosts>` manager. Provides dynamic add of
-        vhosts without restart, wildcards support and dynamic routing via
-        pattern matching ::
-
-            [daemons]
-            vhosts={couch_httpd_vhost, start_link, []}
diff --git a/src/setup/cluster.rst b/src/setup/cluster.rst
index 2cb0a43..438799f 100644
--- a/src/setup/cluster.rst
+++ b/src/setup/cluster.rst
@@ -31,10 +31,6 @@
 |             |          | default ``localhost`` | port for all HTTP    |
 |             |          |                       | API requests         |
 +-------------+----------+-----------------------+----------------------+
-| 5986        | tcp      | ``localhost`` or      | Administrative tasks |
-|             |          | private network       | such as node and     |
-|             |          | **ONLY**              | shard management     |
-+-------------+----------+-----------------------+----------------------+
 | 4369        | tcp      | All interfaces        | Erlang port mapper   |
 |             |          | by default            | daemon (epmd)        |
 +-------------+----------+-----------------------+----------------------+
@@ -44,17 +40,10 @@
 +-------------+----------+-----------------------+----------------------+
 
 CouchDB in clustered mode uses the port ``5984``, just as in a standalone
-configuration, but it also uses ``5986`` for node-local APIs. These APIs are
-administrative tools only, such as node and shard management. Do not use
-port ``5986`` for any other reason. The port is slated to be deprecated in a
-future CouchDB release.
-
-.. warning::
-    **Never expose the node-local port to the public Internet.**
-
-    By default, CouchDB only exposes port ``5986`` **only** on localhost.
-    If you have a secondary network connection on nodes for management purposes
-    only, it is acceptable to expose the port on that network as well.
+configuration. Port ``5986``, previously used in CouchDB 2.x, has been removed
+in CouchDB 3.0. All endpoints previously accessible at that port are now
+available under the ``/_node/{node-name}/...`` hierarchy via the primary ``5984``
+port.
 
 CouchDB uses Erlang-native clustering functionality to achieve a clustered
 installation.  Erlang uses TCP port ``4369`` (EPMD) to find other nodes, so all
diff --git a/src/whatsnew/0.11.rst b/src/whatsnew/0.11.rst
index ae01dd9..74bf784 100644
--- a/src/whatsnew/0.11.rst
+++ b/src/whatsnew/0.11.rst
@@ -90,7 +90,7 @@
 
 The default configuration has been changed to avoid causing basic-auth popups
 which result from sending the WWW-Authenticate header. To enable basic-auth
-popups, uncomment the :config:option:`httpd/WWW-Authenticate` line in
+popups, uncomment the config option ``httpd/WWW-Authenticate`` line in
 `local.ini`.
 
 Query server line protocol
diff --git a/src/whatsnew/3.0.rst b/src/whatsnew/3.0.rst
index 08467fb..55d1bc7 100644
--- a/src/whatsnew/3.0.rst
+++ b/src/whatsnew/3.0.rst
@@ -47,16 +47,18 @@
 
     GET /_node/{nodename}/_stats
     GET /_node/{nodename}/_system
-    GET /_node/{nodename}/_restart
     GET /_node/{nodename}/_all_dbs
     GET /_node/{nodename}/_uuids
     GET /_node/{nodename}/_config
     GET /_node/{nodename}/_config/couchdb/uuid
     GET /_node/{nodename}/_nodes/_changes?include_docs=true
-    GET /_node/{nodename}/{db}/{ddoc}/_info
     PUT /_node/{nodename}/_dbs/{dbname}
+    POST /_node/{nodename}/_restart
+    GET /_node/{nodename}/{db-shard}
+    GET /_node/{nodename}/{db-shard}/{doc}
+    GET /_node/{nodename}/{db-shard}/{ddoc}/_info
 
-  ...and so on. Documentation has been updated to reflect this change. **[TODO]**
+  ...and so on. Documentation has been updated to reflect this change.
 
 * :ghissue:`2389`: CouchDB 3.0 now requires a server admin user to be defined at
   startup, or will print an error message and exit. (The Admin Party is now over.)