Release patch 2.0.4
[dmaap/dbcapi.git] / docs / api.rst
index 90595fb..624727d 100644 (file)
@@ -1,5 +1,6 @@
 DMaaP Bus Controller REST API 1.1.0
 ===================================
+.. _offeredapis:
 
 .. toctree::
     :maxdepth: 3
@@ -8,17 +9,39 @@ DMaaP Bus Controller REST API 1.1.0
 Description
 ~~~~~~~~~~~
 
-provides an API for OpenDCAE components which need to provision underlying DMaaP technologies (Data Router and Message Router). Primary clients for this API are anticipated to be the OpenDCAE Controller, OpenDCAE Orchestrator, OpenDCAE Inventory and the ECOMP Portal.
+provides an API for OpenDCAE components which need to provision
+                                                                       underlying DMaaP technologies (Data Router and Message Router).
+                                                                       Primary clients for this API are anticipated to be the OpenDCAE
+                                                                       Controller, OpenDCAE Orchestrator, OpenDCAE Inventory and the
+                                                                       ECOMP Portal.
 
-Objects managed by DMaaP are deployed in a dcaeLocation which is a unique identifier for an OpenStack tenant for a dcaeLayer, opendcae-central (aka ecomp) or opendcae-local-ntc (aka edge).
+                                                                       Objects managed by DMaaP are deployed in a dcaeLocation which is a
+                                                                       unique identifier for an OpenStack tenant for a dcaeLayer,
+                                                                       opendcae-central (aka ecomp) or opendcae-local-ntc (aka edge).
 
-A dcaeEnvironment (e.g. FTL or prod) has a single DMaaP. A DMaaP is managed by a one or more stateless DMaaP Bus Controller(s), though Bus Controller relies on PGaaS for persistence. Each DMaaP has a single instance of Data Router, which has 1 or more DR_Nodes deployed at each dcaeLocation. DR Clients of type DR_Pub generally publish to a DR_Node that is local to its dcaeLocation. Routing for a Feed is determined by the dcaelocation of its DR_Sub clients.
+                                                                       A dcaeEnvironment (e.g. FTL or prod) has a single DMaaP. A
+                                                                       DMaaP is managed by a one or more stateless DMaaP Bus
+                                                                       Controller(s), though Bus Controller relies on PGaaS for
+                                                                       persistence. Each DMaaP has a single instance of Data Router,
+                                                                       which has 1 or more DR_Nodes deployed at each dcaeLocation. DR
+                                                                       Clients of type DR_Pub generally publish to a DR_Node that is
+                                                                       local to its dcaeLocation. Routing for a Feed is determined by
+                                                                       the dcaelocation of its DR_Sub clients.
 
-A DMaaP may have many Message Router instances. Each instance is deployed as an MR_Cluster. One MR_Cluster is deployed at each dcaeLocation. MR_Clients generally communicate to the MR_Cluster at the same dcaeLocation. Replication of messages between MR_Clusters is accomplished by MR Bridge, which is provioned by DMaaP Bus Controller based on Topic attributes.
+                                                                       A DMaaP may have many Message Router instances. Each instance is
+                                                                       deployed as an MR_Cluster. One MR_Cluster is deployed at each
+                                                                       dcaeLocation. MR_Clients generally communicate to the
+                                                                       MR_Cluster at the same dcaeLocation. Replication of messages
+                                                                       between MR_Clusters is accomplished by MR Bridge, which is
+                                                                       provioned by DMaaP Bus Controller based on Topic attributes.
 
-Therefore, the role of DMaaP Bus Controller is to support other DCAE infrastructure components to dynamically provision DMaaP services on behalf of DMaaP clients, and to assist in any management or discovery activity of its clients.
+                                                                       Therefore, the role of DMaaP Bus Controller is to support other
+                                                                       DCAE infrastructure components to dynamically provision DMaaP
+                                                                       services on behalf of DMaaP clients, and to assist in any
+                                                                       management or discovery activity of its clients.
 
-A convention of this API is to return JSON responses per OpenStack style.
+                                                                       A convention of this API is to return JSON responses per
+                                                                       OpenStack style.
 
 
 
@@ -72,7 +95,7 @@ Description
 
 .. raw:: html
 
-    Returns array of  `BrTopic` objects. If source and target query params are specified, only report on that bridge.  If detail param is true, list topics names, else just a count is returned
+    Returns array of  `BrTopic` objects. If source and target query params are specified, only report on that bridge.  If detail param is true, list topics names, else just a count is returned.
 
 Parameters
 ++++++++++
@@ -82,8 +105,7 @@ Parameters
     :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 15, 10, 10, 10, 20, 30
 
-        source | query | No | string |  |  | 
-        target | query | No | string |  |  | 
+        mmagent | query | No | string |  |  | 
         detail | query | No | boolean |  |  | 
 
 
@@ -100,24 +122,17 @@ Responses
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`BrTopic <d_d71baea9d8e4e59bc395ef51f45dff1b>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring", 
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
-        "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring", 
-        "nodeKey": "somestring", 
-        "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "brSource": "somestring", 
+        "brTarget": "somestring", 
+        "mmAgentName": "somestring", 
+        "topicCount": 1
     }
 
 **400**
@@ -157,7 +172,7 @@ Description
 
 .. raw:: html
 
-    replace the topic list for a specific Bridge.  Use JSON Body for value to replace whitelist, but if refreshFlag param is true, simply refresh using existing whitelist
+    replace the topic list for a specific Bridge.  Use JSON Body for value to replace whitelist, but if refreshFlag param is true, simply refresh using existing whitelist.If split param is true, spread whitelist over smaller mmagents.
 
 Parameters
 ++++++++++
@@ -167,9 +182,9 @@ Parameters
     :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 15, 10, 10, 10, 20, 30
 
-        source | query | No | string |  |  | 
-        target | query | No | string |  |  | 
+        mmagent | query | No | string |  |  | 
         refresh | query | No | boolean |  |  | 
+        split | query | No | boolean |  |  | 
 
 
 Request
@@ -185,24 +200,17 @@ Responses
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`BrTopic <d_d71baea9d8e4e59bc395ef51f45dff1b>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring", 
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
-        "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring", 
-        "nodeKey": "somestring", 
-        "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "brSource": "somestring", 
+        "brTarget": "somestring", 
+        "mmAgentName": "somestring", 
+        "topicCount": 1
     }
 
 **400**
@@ -267,24 +275,22 @@ Responses
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`DcaeLocation <d_47d80e451933beb623fcf5257867cbcb>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring"
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
+        "central": true
+        "clli": "somestring", 
+        "dcaeLayer": "somestring", 
+        "dcaeLocationName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring"
-        "nodeKey": "somestring", 
+        "local": true
+        "openStackAvailabilityZone": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "subnet": "somestring"
     }
 
 **400**
@@ -350,24 +356,22 @@ Responses
 successful operation
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`DcaeLocation <d_47d80e451933beb623fcf5257867cbcb>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring"
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
+        "central": true
+        "clli": "somestring", 
+        "dcaeLayer": "somestring", 
+        "dcaeLocationName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring"
-        "nodeKey": "somestring", 
+        "local": true
+        "openStackAvailabilityZone": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "subnet": "somestring"
     }
 
 **204**
@@ -376,24 +380,22 @@ Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`DcaeLocation <d_47d80e451933beb623fcf5257867cbcb>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring"
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
+        "central": true
+        "clli": "somestring", 
+        "dcaeLayer": "somestring", 
+        "dcaeLocationName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring"
-        "nodeKey": "somestring", 
+        "local": true
+        "openStackAvailabilityZone": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "subnet": "somestring"
     }
 
 **400**
@@ -459,24 +461,22 @@ Responses
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`DcaeLocation <d_47d80e451933beb623fcf5257867cbcb>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring"
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
+        "central": true
+        "clli": "somestring", 
+        "dcaeLayer": "somestring", 
+        "dcaeLocationName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring"
-        "nodeKey": "somestring", 
+        "local": true
+        "openStackAvailabilityZone": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "subnet": "somestring"
     }
 
 **400**
@@ -532,24 +532,22 @@ Responses
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`DcaeLocation <d_47d80e451933beb623fcf5257867cbcb>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring"
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
+        "central": true
+        "clli": "somestring", 
+        "dcaeLayer": "somestring", 
+        "dcaeLocationName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring"
-        "nodeKey": "somestring", 
+        "local": true
+        "openStackAvailabilityZone": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "subnet": "somestring"
     }
 
 **400**
@@ -615,24 +613,22 @@ Responses
 Success
 
 
-Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
+Type: :ref:`DcaeLocation <d_47d80e451933beb623fcf5257867cbcb>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "accessKeyOwner": "somestring"
-        "bridgeAdminTopic": "somestring", 
-        "dmaapName": "somestring", 
-        "drProvUrl": "somestring", 
+        "central": true
+        "clli": "somestring", 
+        "dcaeLayer": "somestring", 
+        "dcaeLocationName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "loggingUrl": "somestring"
-        "nodeKey": "somestring", 
+        "local": true
+        "openStackAvailabilityZone": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "topicNsRoot": "somestring", 
-        "version": "somestring"
+        "subnet": "somestring"
     }
 
 **400**
@@ -661,14 +657,14 @@ DMAAP
 ~~~~~
 
 
-Endpoint for this instance of DMaaP object containing values for this OpenDCAE deployment
+V2 Endpoint for this instance of DMaaP object containing values for this OpenDCAE deployment
 
 
 
 
 
-POST ``/dmaap``
----------------
+POST ``/dmaap_v2``
+------------------
 
 
 Summary
@@ -712,7 +708,6 @@ Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
         "loggingUrl": "somestring", 
         "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "topicNsRoot": "somestring", 
         "version": "somestring"
     }
@@ -740,8 +735,8 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-GET ``/dmaap``
---------------
+POST ``/dmaap``
+---------------
 
 
 Summary
@@ -754,7 +749,7 @@ Description
 
 .. raw:: html
 
-    returns the `dmaap` object, which contains system wide configuration settings
+    Create a new DMaaP set system wide configuration settings for the *dcaeEnvironment*.  Deprecated with introduction of persistence in 1610.
 
 
 Request
@@ -785,7 +780,6 @@ Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
         "loggingUrl": "somestring", 
         "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "topicNsRoot": "somestring", 
         "version": "somestring"
     }
@@ -813,8 +807,8 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-PUT ``/dmaap``
---------------
+GET ``/dmaap_v2``
+-----------------
 
 
 Summary
@@ -827,7 +821,7 @@ Description
 
 .. raw:: html
 
-    Update system settings for *dcaeEnvironment*.
+    returns the `dmaap` object, which contains system wide configuration settings
 
 
 Request
@@ -858,7 +852,6 @@ Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
         "loggingUrl": "somestring", 
         "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "topicNsRoot": "somestring", 
         "version": "somestring"
     }
@@ -884,32 +877,23 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-  
-DR_NODES
-~~~~~~~~
-
-
-Endpoint for a Data Router Node server
-
-
 
 
-
-POST ``/dr_nodes``
-------------------
+GET ``/dmaap``
+--------------
 
 
 Summary
 +++++++
 
-return DR_Node details
+return dmaap details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    create a `DR_Node` in a *dcaeLocation*.  Note that multiple `DR_Node`s may exist in the same `dcaeLocation`.
+    returns the `dmaap` object, which contains system wide configuration settings
 
 
 Request
@@ -925,19 +909,22 @@ Responses
 Success
 
 
-Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
+Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "fqdn": "somestring", 
-        "hostName": "somestring", 
+        "accessKeyOwner": "somestring", 
+        "bridgeAdminTopic": "somestring", 
+        "dmaapName": "somestring", 
+        "drProvUrl": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
+        "loggingUrl": "somestring", 
+        "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
+        "topicNsRoot": "somestring"
         "version": "somestring"
     }
 
@@ -964,31 +951,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-DELETE ``/dr_nodes/{fqdn}``
----------------------------
+PUT ``/dmaap_v2``
+-----------------
 
 
 Summary
 +++++++
 
-No Content
+return dmaap details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Delete a single `DR_Node` object.
-
-Parameters
-++++++++++
-
-.. csv-table::
-    :delim: |
-    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
-    :widths: 20, 15, 10, 10, 10, 20, 30
-
-        fqdn | path | Yes | string |  |  | 
+    Update system settings for *dcaeEnvironment*.
 
 
 Request
@@ -1001,44 +978,25 @@ Responses
 **200**
 ^^^^^^^
 
-successful operation
-
-
-Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
-
-**Example:**
-
-.. code-block:: javascript
-
-    {
-        "dcaeLocationName": "somestring", 
-        "fqdn": "somestring", 
-        "hostName": "somestring", 
-        "lastMod": "2015-01-01T15:00:00.000Z", 
-        "status": "EMPTY", 
-        "statusValid": true, 
-        "version": "somestring"
-    }
-
-**204**
-^^^^^^^
-
 Success
 
 
-Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
+Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "fqdn": "somestring", 
-        "hostName": "somestring", 
+        "accessKeyOwner": "somestring", 
+        "bridgeAdminTopic": "somestring", 
+        "dmaapName": "somestring", 
+        "drProvUrl": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
+        "loggingUrl": "somestring", 
+        "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
+        "topicNsRoot": "somestring"
         "version": "somestring"
     }
 
@@ -1065,31 +1023,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-GET ``/dr_nodes/{fqdn}``
-------------------------
+PUT ``/dmaap``
+--------------
 
 
 Summary
 +++++++
 
-return DR_Node details
+return dmaap details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Retrieve a single `DR_Node` object.
-
-Parameters
-++++++++++
-
-.. csv-table::
-    :delim: |
-    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
-    :widths: 20, 15, 10, 10, 10, 20, 30
-
-        fqdn | path | Yes | string |  |  | 
+    Update system settings for *dcaeEnvironment*.
 
 
 Request
@@ -1105,19 +1053,22 @@ Responses
 Success
 
 
-Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
+Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "fqdn": "somestring", 
-        "hostName": "somestring", 
+        "accessKeyOwner": "somestring", 
+        "bridgeAdminTopic": "somestring", 
+        "dmaapName": "somestring", 
+        "drProvUrl": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
+        "loggingUrl": "somestring", 
+        "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
+        "topicNsRoot": "somestring"
         "version": "somestring"
     }
 
@@ -1142,10 +1093,19 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
+  
+DR_NODES
+~~~~~~~~
+
+
+Endpoint for a Data Router Node server
+
+
 
 
-GET ``/dr_nodes``
------------------
+
+POST ``/dr_nodes``
+------------------
 
 
 Summary
@@ -1158,7 +1118,7 @@ Description
 
 .. raw:: html
 
-    Returns array of `DR_Node` object array.  Need to add filter by dcaeLocation.
+    create a `DR_Node` in a *dcaeLocation*.  Note that multiple `DR_Node`s may exist in the same `dcaeLocation`.
 
 
 Request
@@ -1186,7 +1146,6 @@ Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
         "hostName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "version": "somestring"
     }
 
@@ -1213,21 +1172,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-PUT ``/dr_nodes/{fqdn}``
-------------------------
+DELETE ``/dr_nodes/{fqdn}``
+---------------------------
 
 
 Summary
 +++++++
 
-return DR_Node details
+No Content
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Update a single `DR_Node` object.
+    Delete a single `DR_Node` object.
 
 Parameters
 ++++++++++
@@ -1250,6 +1209,27 @@ Responses
 **200**
 ^^^^^^^
 
+successful operation
+
+
+Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "dcaeLocationName": "somestring", 
+        "fqdn": "somestring", 
+        "hostName": "somestring", 
+        "lastMod": "2015-01-01T15:00:00.000Z", 
+        "status": "EMPTY", 
+        "version": "somestring"
+    }
+
+**204**
+^^^^^^^
+
 Success
 
 
@@ -1265,7 +1245,6 @@ Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
         "hostName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "version": "somestring"
     }
 
@@ -1290,32 +1269,33 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-  
-DR_PUBS
-~~~~~~~
-
 
-Endpoint for a Data Router client that implements a Publisher
 
-
-
-
-
-POST ``/dr_pubs``
------------------
+GET ``/dr_nodes/{fqdn}``
+------------------------
 
 
 Summary
 +++++++
 
-return DR_Pub details
+return DR_Node details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    create a DR Publisher in the specified environment.
+    Retrieve a single `DR_Node` object.
+
+Parameters
+++++++++++
+
+.. csv-table::
+    :delim: |
+    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
+    :widths: 20, 15, 10, 10, 10, 20, 30
+
+        fqdn | path | Yes | string |  |  | 
 
 
 Request
@@ -1331,7 +1311,7 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
 
 **Example:**
 
@@ -1339,13 +1319,11 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
+        "hostName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "version": "somestring"
     }
 
 **400**
@@ -1371,31 +1349,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-DELETE ``/dr_pubs/{pubId}``
----------------------------
+GET ``/dr_nodes``
+-----------------
 
 
 Summary
 +++++++
 
-return DR_Pub details
+return DR_Node details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    delete a DR Publisher in the specified environment. Delete a `DR_Pub` object by pubId
-
-Parameters
-++++++++++
-
-.. csv-table::
-    :delim: |
-    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
-    :widths: 20, 15, 10, 10, 10, 20, 30
-
-        pubId | path | Yes | string |  |  | 
+    Returns array of `DR_Node` object array.  Need to add filter by dcaeLocation.
 
 
 Request
@@ -1408,33 +1376,10 @@ Responses
 **200**
 ^^^^^^^
 
-successful operation
-
-
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
-
-**Example:**
-
-.. code-block:: javascript
-
-    {
-        "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
-        "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
-        "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
-    }
-
-**204**
-^^^^^^^
-
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
 
 **Example:**
 
@@ -1442,13 +1387,11 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
+        "hostName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "version": "somestring"
     }
 
 **400**
@@ -1474,21 +1417,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-GET ``/dr_pubs/{pubId}``
+PUT ``/dr_nodes/{fqdn}``
 ------------------------
 
 
 Summary
 +++++++
 
-return DR_Pub details
+return DR_Node details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    returns a DR Publisher in the specified environment. Gets a `DR_Pub` object by pubId
+    Update a single `DR_Node` object.
 
 Parameters
 ++++++++++
@@ -1498,7 +1441,7 @@ Parameters
     :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 15, 10, 10, 10, 20, 30
 
-        pubId | path | Yes | string |  |  | 
+        fqdn | path | Yes | string |  |  | 
 
 
 Request
@@ -1514,7 +1457,7 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`DR_Node <d_d15e2cee407536866c875375e3f705e0>`
 
 **Example:**
 
@@ -1522,13 +1465,11 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
+        "hostName": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "version": "somestring"
     }
 
 **400**
@@ -1552,10 +1493,19 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
+  
+DR_PUBS
+~~~~~~~
+
+
+Endpoint for a Data Router client that implements a Publisher
+
 
 
-GET ``/dr_pubs``
-----------------
+
+
+POST ``/dr_pubs``
+-----------------
 
 
 Summary
@@ -1568,7 +1518,7 @@ Description
 
 .. raw:: html
 
-    Returns array of  `DR_Pub` objects.  Add filter for feedId.
+    create a DR Publisher in the specified environment.
 
 
 Request
@@ -1596,7 +1546,6 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -1624,8 +1573,8 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-PUT ``/dr_pubs/{pubId}``
-------------------------
+DELETE ``/dr_pubs/{pubId}``
+---------------------------
 
 
 Summary
@@ -1638,7 +1587,7 @@ Description
 
 .. raw:: html
 
-    update a DR Publisher in the specified environment.  Update a `DR_Pub` object by pubId
+    delete a DR Publisher in the specified environment. Delete a `DR_Pub` object by pubId
 
 Parameters
 ++++++++++
@@ -1661,6 +1610,28 @@ Responses
 **200**
 ^^^^^^^
 
+successful operation
+
+
+Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "dcaeLocationName": "somestring", 
+        "feedId": "somestring", 
+        "lastMod": "2015-01-01T15:00:00.000Z", 
+        "pubId": "somestring", 
+        "status": "EMPTY", 
+        "username": "somestring", 
+        "userpwd": "somestring"
+    }
+
+**204**
+^^^^^^^
+
 Success
 
 
@@ -1676,7 +1647,6 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -1702,32 +1672,33 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-  
-DR_SUBS
-~~~~~~~
-
-
-Endpoint for a Data Router client that implements a Subscriber
-
-
 
 
-
-POST ``/dr_subs``
------------------
+GET ``/dr_pubs/{pubId}``
+------------------------
 
 
 Summary
 +++++++
 
-return DR_Sub details
+return DR_Pub details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Create a  `DR_Sub` object.  
+    returns a DR Publisher in the specified environment. Gets a `DR_Pub` object by pubId
+
+Parameters
+++++++++++
+
+.. csv-table::
+    :delim: |
+    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
+    :widths: 20, 15, 10, 10, 10, 20, 30
+
+        pubId | path | Yes | string |  |  | 
 
 
 Request
@@ -1755,7 +1726,6 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -1783,31 +1753,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-DELETE ``/dr_subs/{subId}``
----------------------------
+GET ``/dr_pubs``
+----------------
 
 
 Summary
 +++++++
 
-return DR_Sub details
+return DR_Pub details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Delete a  `DR_Sub` object, selected by subId
-
-Parameters
-++++++++++
-
-.. csv-table::
-    :delim: |
-    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
-    :widths: 20, 15, 10, 10, 10, 20, 30
-
-        subId | path | Yes | string |  |  | 
+    Returns array of  `DR_Pub` objects.  Add filter for feedId.
 
 
 Request
@@ -1835,7 +1795,6 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -1863,21 +1822,21 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-GET ``/dr_subs/{subId}``
+PUT ``/dr_pubs/{pubId}``
 ------------------------
 
 
 Summary
 +++++++
 
-return DR_Sub details
+return DR_Pub details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Retrieve a  `DR_Sub` object, selected by subId
+    update a DR Publisher in the specified environment.  Update a `DR_Pub` object by pubId
 
 Parameters
 ++++++++++
@@ -1887,7 +1846,7 @@ Parameters
     :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 15, 10, 10, 10, 20, 30
 
-        subId | path | Yes | string |  |  | 
+        pubId | path | Yes | string |  |  | 
 
 
 Request
@@ -1915,7 +1874,6 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -1941,10 +1899,19 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
+  
+DR_SUBS
+~~~~~~~
+
+
+Endpoint for a Data Router client that implements a Subscriber
+
 
 
-GET ``/dr_subs``
-----------------
+
+
+POST ``/dr_subs``
+-----------------
 
 
 Summary
@@ -1957,7 +1924,7 @@ Description
 
 .. raw:: html
 
-    Returns array of  `DR_Sub` objects.  Add filter for feedId.
+    Create a  `DR_Sub` object.  
 
 
 Request
@@ -1973,19 +1940,27 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`DR_Sub <d_48cf328d246f41e1d11a09251b042f02>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
         "dcaeLocationName": "somestring", 
+        "deliveryURL": "somestring", 
         "feedId": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
+        "subId": "somestring", 
+        "suspended": true, 
+        "use100": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -2013,8 +1988,8 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-PUT ``/dr_subs/{subId}``
-------------------------
+DELETE ``/dr_subs/{subId}``
+---------------------------
 
 
 Summary
@@ -2027,7 +2002,7 @@ Description
 
 .. raw:: html
 
-    Update a  `DR_Sub` object, selected by subId
+    Delete a  `DR_Sub` object, selected by subId
 
 Parameters
 ++++++++++
@@ -2053,19 +2028,27 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`DR_Sub <d_48cf328d246f41e1d11a09251b042f02>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
         "dcaeLocationName": "somestring", 
+        "deliveryURL": "somestring", 
         "feedId": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
+        "subId": "somestring", 
+        "suspended": true, 
+        "use100": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -2091,32 +2074,33 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
-  
-FEEDS
-~~~~~
-
-
-Endpoint for a Data Router Feed
-
-
-
 
 
-POST ``/feeds``
----------------
+GET ``/dr_subs/{subId}``
+------------------------
 
 
 Summary
 +++++++
 
-return Feed details
+return DR_Sub details
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Create a of  `Feed` object.
+    Retrieve a  `DR_Sub` object, selected by subId
+
+Parameters
+++++++++++
+
+.. csv-table::
+    :delim: |
+    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
+    :widths: 20, 15, 10, 10, 10, 20, 30
+
+        subId | path | Yes | string |  |  | 
 
 
 Request
@@ -2132,19 +2116,193 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`DR_Sub <d_48cf328d246f41e1d11a09251b042f02>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
         "dcaeLocationName": "somestring", 
+        "deliveryURL": "somestring", 
         "feedId": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
+        "status": "EMPTY", 
+        "subId": "somestring", 
+        "suspended": true, 
+        "use100": true, 
+        "username": "somestring", 
+        "userpwd": "somestring"
+    }
+
+**400**
+^^^^^^^
+
+Error
+
+
+Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "code": 1, 
+        "fields": "somestring", 
+        "is2xx": true, 
+        "message": "somestring"
+    }
+
+
+
+
+
+GET ``/dr_subs``
+----------------
+
+
+Summary
++++++++
+
+return DR_Sub details
+
+Description
++++++++++++
+
+.. raw:: html
+
+    Returns array of  `DR_Sub` objects.  Add filter for feedId.
+
+
+Request
++++++++
+
+
+Responses
++++++++++
+
+**200**
+^^^^^^^
+
+Success
+
+
+Type: :ref:`DR_Sub <d_48cf328d246f41e1d11a09251b042f02>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
+        "dcaeLocationName": "somestring", 
+        "deliveryURL": "somestring", 
+        "feedId": "somestring", 
+        "lastMod": "2015-01-01T15:00:00.000Z", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
+        "status": "EMPTY", 
+        "subId": "somestring", 
+        "suspended": true, 
+        "use100": true, 
+        "username": "somestring", 
+        "userpwd": "somestring"
+    }
+
+**400**
+^^^^^^^
+
+Error
+
+
+Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "code": 1, 
+        "fields": "somestring", 
+        "is2xx": true, 
+        "message": "somestring"
+    }
+
+
+
+
+
+PUT ``/dr_subs/{subId}``
+------------------------
+
+
+Summary
++++++++
+
+return DR_Sub details
+
+Description
++++++++++++
+
+.. raw:: html
+
+    Update a  `DR_Sub` object, selected by subId
+
+Parameters
+++++++++++
+
+.. csv-table::
+    :delim: |
+    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
+    :widths: 20, 15, 10, 10, 10, 20, 30
+
+        subId | path | Yes | string |  |  | 
+
+
+Request
++++++++
+
+
+Responses
++++++++++
+
+**200**
+^^^^^^^
+
+Success
+
+
+Type: :ref:`DR_Sub <d_48cf328d246f41e1d11a09251b042f02>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
+        "dcaeLocationName": "somestring", 
+        "deliveryURL": "somestring", 
+        "feedId": "somestring", 
+        "lastMod": "2015-01-01T15:00:00.000Z", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
+        "subId": "somestring", 
+        "suspended": true, 
+        "use100": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -2170,6 +2328,162 @@ Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
 
 
 
+  
+FEEDS
+~~~~~
+
+
+Endpoint for a Data Router Feed
+
+
+
+
+
+POST ``/feeds``
+---------------
+
+
+Summary
++++++++
+
+return Feed details
+
+Description
++++++++++++
+
+.. raw:: html
+
+    Create a of  `Feed` object.
+
+Parameters
+++++++++++
+
+.. csv-table::
+    :delim: |
+    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
+    :widths: 20, 15, 10, 10, 10, 20, 30
+
+        useExisting | query | No | string |  |  | 
+
+
+Request
++++++++
+
+
+Responses
++++++++++
+
+**200**
+^^^^^^^
+
+Success
+
+
+Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "asprClassification": "somestring", 
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
+        "feedDescription": "somestring", 
+        "feedId": "somestring", 
+        "feedName": "somestring", 
+        "feedVersion": "somestring", 
+        "formatUuid": "somestring", 
+        "lastMod": "2015-01-01T15:00:00.000Z", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
+        "publishURL": "somestring", 
+        "pubs": [
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
+        "status": "EMPTY", 
+        "subs": [
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
+        "subscribeURL": "somestring", 
+        "suspended": true
+    }
+
+**400**
+^^^^^^^
+
+Error
+
+
+Type: :ref:`ApiError <d_a3a7580ce9d87225d7f62e6b67b4d036>`
+
+**Example:**
+
+.. code-block:: javascript
+
+    {
+        "code": 1, 
+        "fields": "somestring", 
+        "is2xx": true, 
+        "message": "somestring"
+    }
+
+
+
 
 
 DELETE ``/feeds/{id}``
@@ -2240,7 +2554,6 @@ Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
                 "lastMod": "2015-01-01T15:00:00.000Z", 
                 "pubId": "somestring", 
                 "status": "EMPTY", 
-                "statusValid": true, 
                 "username": "somestring", 
                 "userpwd": "somestring"
             }, 
@@ -2250,13 +2563,11 @@ Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
                 "lastMod": "2015-01-01T15:00:00.000Z", 
                 "pubId": "somestring", 
                 "status": "EMPTY", 
-                "statusValid": true, 
                 "username": "somestring", 
                 "userpwd": "somestring"
             }
         ], 
         "status": "EMPTY", 
-        "statusValid": true, 
         "subs": [
             {
                 "bytes": [
@@ -2270,7 +2581,6 @@ Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
                 "logURL": "somestring", 
                 "owner": "somestring", 
                 "status": "EMPTY", 
-                "statusValid": true, 
                 "subId": "somestring", 
                 "suspended": true, 
                 "use100": true, 
@@ -2289,7 +2599,6 @@ Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
                 "logURL": "somestring", 
                 "owner": "somestring", 
                 "status": "EMPTY", 
-                "statusValid": true, 
                 "subId": "somestring", 
                 "suspended": true, 
                 "use100": true, 
@@ -2307,21 +2616,88 @@ Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
+        "asprClassification": "somestring", 
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
+        "feedDescription": "somestring", 
         "feedId": "somestring", 
+        "feedName": "somestring", 
+        "feedVersion": "somestring", 
+        "formatUuid": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
+        "publishURL": "somestring", 
+        "pubs": [
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subs": [
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
+        "subscribeURL": "somestring", 
+        "suspended": true
     }
 
 **400**
@@ -2399,7 +2775,6 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "pubId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "username": "somestring", 
         "userpwd": "somestring"
     }
@@ -2469,21 +2844,88 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
+        "asprClassification": "somestring", 
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
+        "feedDescription": "somestring", 
         "feedId": "somestring", 
+        "feedName": "somestring", 
+        "feedVersion": "somestring", 
+        "formatUuid": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
+        "publishURL": "somestring", 
+        "pubs": [
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subs": [
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
+        "subscribeURL": "somestring", 
+        "suspended": true
     }
 
 **400**
@@ -2549,21 +2991,88 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Feed <d_289ad39619725df26c9ff382d4c97c75>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
+        "asprClassification": "somestring", 
+        "bytes": [
+            "somestring", 
+            "somestring"
+        ], 
+        "feedDescription": "somestring", 
         "feedId": "somestring", 
+        "feedName": "somestring", 
+        "feedVersion": "somestring", 
+        "formatUuid": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "logURL": "somestring", 
+        "owner": "somestring", 
+        "publishURL": "somestring", 
+        "pubs": [
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "dcaeLocationName": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "pubId": "somestring", 
+                "status": "EMPTY", 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subs": [
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }, 
+            {
+                "bytes": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "dcaeLocationName": "somestring", 
+                "deliveryURL": "somestring", 
+                "feedId": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "logURL": "somestring", 
+                "owner": "somestring", 
+                "status": "EMPTY", 
+                "subId": "somestring", 
+                "suspended": true, 
+                "use100": true, 
+                "username": "somestring", 
+                "userpwd": "somestring"
+            }
+        ], 
+        "subscribeURL": "somestring", 
+        "suspended": true
     }
 
 **400**
@@ -2643,7 +3152,6 @@ Type: :ref:`Dmaap <d_4ea0e7758a1f8502222793e4a13b04f7>`
         "loggingUrl": "somestring", 
         "nodeKey": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "topicNsRoot": "somestring", 
         "version": "somestring"
     }
@@ -2687,14 +3195,14 @@ POST ``/mr_clients``
 Summary
 +++++++
 
-return MR_Client details
+Associate an MR_Client object to a Topic
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Create a  `MR_Client` object.
+    Create a  `MR_Client` object.The `dcaeLocation` attribute is used to match an `MR_Cluster` object with the same value, with the intent of localizing message traffic.  In legacy implementation, the `clientRole` is granted appropriate permission in AAF.  Newer implementions may instead specify an AAF Identity, which will be added to the appropriate `Topic` role.
 
 
 Request
@@ -2710,21 +3218,25 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "action": [
+            "somestring", 
+            "somestring"
+        ], 
+        "clientIdentity": "somestring", 
+        "clientRole": "somestring", 
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqtn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "mrClientId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "topicURL": "somestring"
     }
 
 **400**
@@ -2757,7 +3269,7 @@ DELETE ``/mr_clients/{subId}``
 Summary
 +++++++
 
-return MR_Client details
+Delete an MR_Client object
 
 Description
 +++++++++++
@@ -2801,13 +3313,13 @@ Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
             "somestring", 
             "somestring"
         ], 
+        "clientIdentity": "somestring", 
         "clientRole": "somestring", 
         "dcaeLocationName": "somestring", 
         "fqtn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
         "mrClientId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
         "topicURL": "somestring"
     }
 
@@ -2817,21 +3329,25 @@ Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "action": [
+            "somestring", 
+            "somestring"
+        ], 
+        "clientIdentity": "somestring", 
+        "clientRole": "somestring", 
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqtn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "mrClientId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "topicURL": "somestring"
     }
 
 **400**
@@ -2887,21 +3403,25 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "action": [
+            "somestring", 
+            "somestring"
+        ], 
+        "clientIdentity": "somestring", 
+        "clientRole": "somestring", 
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqtn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "mrClientId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "topicURL": "somestring"
     }
 
 **400**
@@ -2967,21 +3487,25 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "action": [
+            "somestring", 
+            "somestring"
+        ], 
+        "clientIdentity": "somestring", 
+        "clientRole": "somestring", 
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqtn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "mrClientId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "topicURL": "somestring"
     }
 
 **400**
@@ -3014,7 +3538,7 @@ PUT ``/mr_clients/{clientId}``
 Summary
 +++++++
 
-return MR_Client details
+Update an MR_Client object
 
 Description
 +++++++++++
@@ -3047,21 +3571,25 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
+        "action": [
+            "somestring", 
+            "somestring"
+        ], 
+        "clientIdentity": "somestring", 
+        "clientRole": "somestring", 
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqtn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "mrClientId": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "topicURL": "somestring"
     }
 
 **400**
@@ -3126,7 +3654,7 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
 
 **Example:**
 
@@ -3134,13 +3662,14 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "replicationGroup": "somestring", 
+        "sourceReplicationPort": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "targetReplicationPort": "somestring"
+        "topicPort": "somestring", 
+        "topicProtocol": "somestring"
     }
 
 **400**
@@ -3215,13 +3744,11 @@ Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
     {
         "dcaeLocationName": "somestring", 
         "fqdn": "somestring", 
-        "hosts": [
-            "somestring", 
-            "somestring"
-        ], 
         "lastMod": "2015-01-01T15:00:00.000Z", 
+        "replicationGroup": "somestring", 
+        "sourceReplicationPort": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
+        "targetReplicationPort": "somestring"
         "topicPort": "somestring", 
         "topicProtocol": "somestring"
     }
@@ -3232,7 +3759,7 @@ Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
 
 **Example:**
 
@@ -3240,13 +3767,14 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "replicationGroup": "somestring", 
+        "sourceReplicationPort": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "targetReplicationPort": "somestring"
+        "topicPort": "somestring", 
+        "topicProtocol": "somestring"
     }
 
 **400**
@@ -3312,7 +3840,7 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
 
 **Example:**
 
@@ -3320,13 +3848,14 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "replicationGroup": "somestring", 
+        "sourceReplicationPort": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "targetReplicationPort": "somestring"
+        "topicPort": "somestring", 
+        "topicProtocol": "somestring"
     }
 
 **400**
@@ -3382,7 +3911,7 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
 
 **Example:**
 
@@ -3390,13 +3919,14 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "replicationGroup": "somestring", 
+        "sourceReplicationPort": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "targetReplicationPort": "somestring"
+        "topicPort": "somestring", 
+        "topicProtocol": "somestring"
     }
 
 **400**
@@ -3462,7 +3992,7 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`MR_Cluster <d_eec7176a0080debe1b19c2dad2e97c24>`
 
 **Example:**
 
@@ -3470,13 +4000,14 @@ Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
 
     {
         "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "fqdn": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "replicationGroup": "somestring", 
+        "sourceReplicationPort": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "targetReplicationPort": "somestring"
+        "topicPort": "somestring", 
+        "topicProtocol": "somestring"
     }
 
 **400**
@@ -3518,14 +4049,24 @@ POST ``/topics``
 Summary
 +++++++
 
-return Topic details
+Create a Topic object
 
 Description
 +++++++++++
 
 .. raw:: html
 
-    Create  `Topic` object.
+    Create  `Topic` object.For convenience, the message body may populate the `clients` array, in which case each entry will be added as an `MR_Client`.  Beginning in ONAP Dublin Release, dbcapi will create two AAF Roles by default, one each for the publisher and subscriber per topic.  MR_Clients can then specify an AAF Identity to be added to the appropriate default Role, avoiding the need to create Role(s) in advance.
+
+Parameters
+++++++++++
+
+.. csv-table::
+    :delim: |
+    :header: "Name", "Located in", "Required", "Type", "Format", "Properties", "Description"
+    :widths: 20, 15, 10, 10, 10, 20, 30
+
+        useExisting | query | No | string |  |  | 
 
 
 Request
@@ -3541,21 +4082,59 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "clients": [
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }, 
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }
+        ], 
+        "formatUuid": "somestring", 
+        "fqtn": "somestring", 
+        "fqtnStyle": "FQTN_NOT_SPECIFIED", 
+        "globalMrURL": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "owner": "somestring", 
+        "partitionCount": "somestring", 
+        "publisherRole": "somestring", 
+        "replicationCase": "REPLICATION_NOT_SPECIFIED", 
+        "replicationCount": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subscriberRole": "somestring", 
+        "tnxEnabled": "somestring", 
+        "topicDescription": "somestring", 
+        "topicName": "somestring", 
+        "version": "somestring"
     }
 
 **400**
@@ -3628,23 +4207,19 @@ Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 .. code-block:: javascript
 
     {
-        "bytes": [
-            "somestring", 
-            "somestring"
-        ], 
         "clients": [
             {
                 "action": [
                     "somestring", 
                     "somestring"
                 ], 
+                "clientIdentity": "somestring", 
                 "clientRole": "somestring", 
                 "dcaeLocationName": "somestring", 
                 "fqtn": "somestring", 
                 "lastMod": "2015-01-01T15:00:00.000Z", 
                 "mrClientId": "somestring", 
                 "status": "EMPTY", 
-                "statusValid": true, 
                 "topicURL": "somestring"
             }, 
             {
@@ -3652,13 +4227,13 @@ Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
                     "somestring", 
                     "somestring"
                 ], 
+                "clientIdentity": "somestring", 
                 "clientRole": "somestring", 
                 "dcaeLocationName": "somestring", 
                 "fqtn": "somestring", 
                 "lastMod": "2015-01-01T15:00:00.000Z", 
                 "mrClientId": "somestring", 
                 "status": "EMPTY", 
-                "statusValid": true, 
                 "topicURL": "somestring"
             }
         ], 
@@ -3667,11 +4242,13 @@ Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
         "fqtnStyle": "FQTN_NOT_SPECIFIED", 
         "globalMrURL": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "numClients": 1, 
         "owner": "somestring", 
+        "partitionCount": "somestring", 
+        "publisherRole": "somestring", 
         "replicationCase": "REPLICATION_NOT_SPECIFIED", 
+        "replicationCount": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true
+        "subscriberRole": "somestring"
         "tnxEnabled": "somestring", 
         "topicDescription": "somestring", 
         "topicName": "somestring", 
@@ -3684,21 +4261,59 @@ Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "clients": [
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }, 
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }
+        ], 
+        "formatUuid": "somestring", 
+        "fqtn": "somestring", 
+        "fqtnStyle": "FQTN_NOT_SPECIFIED", 
+        "globalMrURL": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "owner": "somestring", 
+        "partitionCount": "somestring", 
+        "publisherRole": "somestring", 
+        "replicationCase": "REPLICATION_NOT_SPECIFIED", 
+        "replicationCount": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subscriberRole": "somestring", 
+        "tnxEnabled": "somestring", 
+        "topicDescription": "somestring", 
+        "topicName": "somestring", 
+        "version": "somestring"
     }
 
 **400**
@@ -3764,21 +4379,59 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "clients": [
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }, 
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }
+        ], 
+        "formatUuid": "somestring", 
+        "fqtn": "somestring", 
+        "fqtnStyle": "FQTN_NOT_SPECIFIED", 
+        "globalMrURL": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "owner": "somestring", 
+        "partitionCount": "somestring", 
+        "publisherRole": "somestring", 
+        "replicationCase": "REPLICATION_NOT_SPECIFIED", 
+        "replicationCount": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subscriberRole": "somestring", 
+        "tnxEnabled": "somestring", 
+        "topicDescription": "somestring", 
+        "topicName": "somestring", 
+        "version": "somestring"
     }
 
 **400**
@@ -3834,21 +4487,59 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "clients": [
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }, 
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }
+        ], 
+        "formatUuid": "somestring", 
+        "fqtn": "somestring", 
+        "fqtnStyle": "FQTN_NOT_SPECIFIED", 
+        "globalMrURL": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "owner": "somestring", 
+        "partitionCount": "somestring", 
+        "publisherRole": "somestring", 
+        "replicationCase": "REPLICATION_NOT_SPECIFIED", 
+        "replicationCount": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subscriberRole": "somestring", 
+        "tnxEnabled": "somestring", 
+        "topicDescription": "somestring", 
+        "topicName": "somestring", 
+        "version": "somestring"
     }
 
 **400**
@@ -3914,21 +4605,59 @@ Responses
 Success
 
 
-Type: :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>`
+Type: :ref:`Topic <d_2e99841971da81b9d240071b86bf168d>`
 
 **Example:**
 
 .. code-block:: javascript
 
     {
-        "dcaeLocationName": "somestring", 
-        "feedId": "somestring", 
+        "clients": [
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }, 
+            {
+                "action": [
+                    "somestring", 
+                    "somestring"
+                ], 
+                "clientIdentity": "somestring", 
+                "clientRole": "somestring", 
+                "dcaeLocationName": "somestring", 
+                "fqtn": "somestring", 
+                "lastMod": "2015-01-01T15:00:00.000Z", 
+                "mrClientId": "somestring", 
+                "status": "EMPTY", 
+                "topicURL": "somestring"
+            }
+        ], 
+        "formatUuid": "somestring", 
+        "fqtn": "somestring", 
+        "fqtnStyle": "FQTN_NOT_SPECIFIED", 
+        "globalMrURL": "somestring", 
         "lastMod": "2015-01-01T15:00:00.000Z", 
-        "pubId": "somestring", 
+        "owner": "somestring", 
+        "partitionCount": "somestring", 
+        "publisherRole": "somestring", 
+        "replicationCase": "REPLICATION_NOT_SPECIFIED", 
+        "replicationCount": "somestring", 
         "status": "EMPTY", 
-        "statusValid": true, 
-        "username": "somestring", 
-        "userpwd": "somestring"
+        "subscriberRole": "somestring", 
+        "tnxEnabled": "somestring", 
+        "topicDescription": "somestring", 
+        "topicName": "somestring", 
+        "version": "somestring"
     }
 
 **400**
@@ -3983,6 +4712,7 @@ BrTopic Model Structure
 
         brSource | No | string |  |  | 
         brTarget | No | string |  |  | 
+        mmAgentName | No | string |  |  | 
         topicCount | No | integer | int32 |  | 
 
 .. _d_d15e2cee407536866c875375e3f705e0:
@@ -3998,9 +4728,8 @@ DR_Node Model Structure
         dcaeLocationName | No | string |  |  | 
         fqdn | No | string |  |  | 
         hostName | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         version | No | string |  |  | 
 
 .. _d_e926d3fa8701e0cc9c8ed1761b3255cd:
@@ -4015,10 +4744,9 @@ DR_Pub Model Structure
 
         dcaeLocationName | No | string |  |  | 
         feedId | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         pubId | No | string |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         username | No | string |  |  | 
         userpwd | No | string |  |  | 
 
@@ -4036,11 +4764,10 @@ DR_Sub Model Structure
         dcaeLocationName | No | string |  |  | 
         deliveryURL | No | string |  |  | 
         feedId | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         logURL | No | string |  |  | 
         owner | No | string |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         subId | No | string |  |  | 
         suspended | No | boolean |  |  | 
         use100 | No | boolean |  |  | 
@@ -4061,11 +4788,10 @@ DcaeLocation Model Structure
         clli | No | string |  |  | 
         dcaeLayer | No | string |  |  | 
         dcaeLocationName | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         local | No | boolean |  |  | 
         openStackAvailabilityZone | No | string |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         subnet | No | string |  |  | 
 
 .. _d_4ea0e7758a1f8502222793e4a13b04f7:
@@ -4082,11 +4808,10 @@ Dmaap Model Structure
         bridgeAdminTopic | No | string |  |  | 
         dmaapName | No | string |  |  | 
         drProvUrl | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         loggingUrl | No | string |  |  | 
         nodeKey | No | string |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         topicNsRoot | No | string |  |  | 
         version | No | string |  |  | 
 
@@ -4107,13 +4832,12 @@ Feed Model Structure
         feedName | No | string |  |  | 
         feedVersion | No | string |  |  | 
         formatUuid | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         logURL | No | string |  |  | 
         owner | No | string |  |  | 
         publishURL | No | string |  |  | 
         pubs | No | array of :ref:`DR_Pub <d_e926d3fa8701e0cc9c8ed1761b3255cd>` |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         subs | No | array of :ref:`DR_Sub <d_48cf328d246f41e1d11a09251b042f02>` |  |  | 
         subscribeURL | No | string |  |  | 
         suspended | No | boolean |  |  | 
@@ -4128,15 +4852,15 @@ MR_Client Model Structure
     :header: "Name", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 10, 15, 15, 30, 25
 
-        action | No | array of string |  |  | 
-        clientRole | No | string |  |  | 
-        dcaeLocationName | No | string |  |  | 
-        fqtn | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
-        mrClientId | No | string |  |  | 
+        action | No | array of string |  |  | one or more actions from the set ('pub', 'sub', 'view') for which this client needs Permission
+        clientIdentity | No | string |  |  | an AAF identity to be associated to an appropriate topic Role
+        clientRole | No | string |  |  | an AAF Role to be granted an appropriate Permission.  If specified, takes precedence over clientIdentity, for backwards compatibility.
+        dcaeLocationName | No | string |  |  | a tag indicating a logical deployment site
+        fqtn | No | string |  |  | Fully Qualified Topic Name constructed by dbcapi
+        lastMod | No | string | date-time |  | datestamp for last update to this object
+        mrClientId | No | string |  |  | a unique identifier generated by dbcapi for this client
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
-        topicURL | No | string |  |  | 
+        topicURL | No | string |  |  | the URL for a MR instance - typically in the same dcaeLocation - that this client should use to access the topic
 
 .. _d_eec7176a0080debe1b19c2dad2e97c24:
 
@@ -4150,10 +4874,11 @@ MR_Cluster Model Structure
 
         dcaeLocationName | No | string |  |  | 
         fqdn | No | string |  |  | 
-        hosts | No | array of string |  |  | 
         lastMod | No | string | date-time |  | 
+        replicationGroup | No | string |  |  | 
+        sourceReplicationPort | No | string |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
+        targetReplicationPort | No | string |  |  | 
         topicPort | No | string |  |  | 
         topicProtocol | No | string |  |  | 
 
@@ -4167,29 +4892,14 @@ MirrorMaker Model Structure
     :header: "Name", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 10, 15, 15, 30, 25
 
-        lastMod | No | string | date-time |  | 
+        lastMod | No | string | date-time |  | datestamp for last update to this object
         mmName | No | string |  |  | 
         sourceCluster | No | string |  |  | 
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
         targetCluster | No | string |  |  | 
         topicCount | No | integer | int32 |  | 
         topics | No | array of string |  |  | 
-        vectors | No | array of :ref:`ReplicationVector <d_56f2d64ab7d8ae64594cda45cf85f918>` |  |  | 
-
-.. _d_56f2d64ab7d8ae64594cda45cf85f918:
-
-ReplicationVector Model Structure
----------------------------------
-
-.. csv-table::
-    :delim: |
-    :header: "Name", "Required", "Type", "Format", "Properties", "Description"
-    :widths: 20, 10, 15, 15, 30, 25
-
-        fqtn | No | string |  |  | 
-        sourceCluster | No | string |  |  | 
-        targetCluster | No | string |  |  | 
+        whitelistUpdateJSON | No | string |  |  | 
 
 .. _d_2e99841971da81b9d240071b86bf168d:
 
@@ -4201,20 +4911,21 @@ Topic Model Structure
     :header: "Name", "Required", "Type", "Format", "Properties", "Description"
     :widths: 20, 10, 15, 15, 30, 25
 
-        bytes | No | array of string |  |  | 
-        clients | No | array of :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>` |  |  | 
-        formatUuid | No | string |  |  | 
-        fqtn | No | string |  |  | 
-        fqtnStyle | No | string |  | {'enum': ['FQTN_NOT_SPECIFIED', 'FQTN_LEGACY_FORMAT', 'FQTN_PROJECTID_FORMAT', 'FQTN_PROJECTID_VERSION_FORMAT']} | 
-        globalMrURL | No | string |  |  | 
-        lastMod | No | string | date-time |  | 
-        numClients | No | integer | int32 |  | 
-        owner | No | string |  |  | 
-        replicationCase | No | string |  | {'enum': ['REPLICATION_NOT_SPECIFIED', 'REPLICATION_NONE', 'REPLICATION_EDGE_TO_CENTRAL', 'REPLICATION_EDGE_TO_CENTRAL_TO_GLOBAL', 'REPLICATION_CENTRAL_TO_EDGE', 'REPLICATION_CENTRAL_TO_GLOBAL', 'REPLICATION_GLOBAL_TO_CENTRAL', 'REPLICATION_GLOBAL_TO_CENTRAL_TO_EDGE']} | 
+        clients | No | array of :ref:`MR_Client <d_56ff81dc98986e27074d9be2731e3f4c>` |  |  | an array of `MR_Client` objects associated to this `Topic`
+        formatUuid | No | string |  |  | a reference to an identifier that describes a data format used for this `Topic`
+        fqtn | No | string |  |  | Fully Qualified Topic Name constructed by dbcapi, following the rules for `fqtnStyle`
+        fqtnStyle | No | string |  | {'enum': ['FQTN_NOT_SPECIFIED', 'FQTN_LEGACY_FORMAT', 'FQTN_PROJECTID_FORMAT', 'FQTN_PROJECTID_VERSION_FORMAT']} | the construction rule for the `fqtn` field
+        globalMrURL | No | string |  |  | the URL of an outside MR instance
+        lastMod | No | string | date-time |  | datestamp for last update to this object
+        owner | No | string |  |  | a label used to identify who requested this `Topic` to be provisioned.  In the future this may be an AAF Identity.
+        partitionCount | No | string |  |  | the kafka attribute for specifying the number of partitions
+        publisherRole | No | string |  |  | a value generated by dbcapi, this AAF Role has permission to publish to this `Topic`
+        replicationCase | No | string |  | {'enum': ['REPLICATION_NOT_SPECIFIED', 'REPLICATION_NONE', 'REPLICATION_EDGE_TO_CENTRAL', 'REPLICATION_EDGE_TO_CENTRAL_TO_GLOBAL', 'REPLICATION_CENTRAL_TO_EDGE', 'REPLICATION_CENTRAL_TO_GLOBAL', 'REPLICATION_GLOBAL_TO_CENTRAL', 'REPLICATION_GLOBAL_TO_CENTRAL_TO_EDGE', 'REPLICATION_EDGE_TO_FQDN', 'REPLICATION_FQDN_TO_EDGE', 'REPLICATION_FQDN_TO_GLOBAL', 'REPLICATION_GLOBAL_TO_FQDN', 'REPLICATION_EDGE_TO_FQDN_TO_GLOBAL', 'REPLICATION_GLOBAL_TO_FQDN_TO_EDGE']} | An indicator for how this `Topic` should be replicated when there are more than one `MR_Cluster` instances
+        replicationCount | No | string |  |  | the kafka attribute for specifying replication within an `MR_Cluster` instance
         status | No | string |  | {'enum': ['EMPTY', 'NEW', 'STAGED', 'VALID', 'INVALID', 'DELETED']} | 
-        statusValid | No | boolean |  |  | 
+        subscriberRole | No | string |  |  | a value generated by dbcapi, this AAF Role has permission to subscribe to this `Topic`
         tnxEnabled | No | string |  |  | 
-        topicDescription | No | string |  |  | 
-        topicName | No | string |  |  | 
-        version | No | string |  |  | 
+        topicDescription | No | string |  |  | a description of what this Topic is used for
+        topicName | No | string |  |  | the short name used by humans, and utilized to construct the `FQTN`
+        version | No | string |  |  | a hook for any versioning needed for managing a `Topic` over time