Updating ROC API for v4.0.0 models

Change-Id: I123f0d4ddd091fca82cd44aba541f8ab8df0ff38
diff --git a/developer/roc-api.rst b/developer/roc-api.rst
index 2708450..ee65e26 100644
--- a/developer/roc-api.rst
+++ b/developer/roc-api.rst
@@ -15,7 +15,7 @@
 .. note:: Opening this in a browser will display a HTML view of the API (powered by *ReDoc*).
 
     To access the raw YAML format use
-    ``curl -H "Accept: application/yaml" http://localhost:8183/aether-roc-api/aether-3.0.0-openapi3.yaml``
+    ``curl -H "Accept: application/yaml" http://localhost:8183/aether-roc-api/aether-4.0.0-openapi3.yaml``
     This YAML format can be imported in to various different tools e.g. |postman_link|
 
 Background
@@ -33,10 +33,10 @@
 
 Endpoints are named based on the type of object. Some examples:
 
-* `GET http://roc/aether/v3.0.0/connectivity-service-v3/enterprise/`. Get a list of enterprises.
-* `GET http://roc/aether/v3.0.0/connectivity-service-v3/enterprise/Starbucks`. Get the Starbucks enterprise.
-* `POST http://roc/aether/v3.0.0/connectivity-service-v3/enterprise`. Create a new enterprise.
-* `PATCH http://roc/aether/v3.0.0/connectivity-service-v3/site/Starbucks-NewYork`. Update the Starbucks New York site.
+* `GET http://roc/aether/v4.0.0/connectivity-service-v3/enterprise/`. Get a list of enterprises.
+* `GET http://roc/aether/v4.0.0/connectivity-service-v3/enterprise/Starbucks`. Get the Starbucks enterprise.
+* `POST http://roc/aether/v4.0.0/connectivity-service-v3/enterprise`. Create a new enterprise.
+* `PATCH http://roc/aether/v4.0.0/connectivity-service-v3/site/Starbucks-NewYork`. Update the Starbucks New York site.
 
 This document is a high-level description of the objects that can be interacted with. For a
 low-level description, see the specification (:ref:`developer/roc-api:Access` section above).
@@ -99,6 +99,23 @@
      `CCCNNNEEESSSSSS` will construct IMSIs using a 3-digit MCC, 3-digit MNC, 3-digit ENT, and a
      6-digit subscriber.
 
+* `small-cell` A list of 5G gNodeB or Access Point or Radios. Each access point has the following:
+
+    * `address`. Hostname of the small cell.
+    * `tac`. Type Allocation Code.
+    * `enable`. If set to `true`, the small cell is enabled. Otherwise, it is disabled.
+
+* `monitoring` Configuration of how the monitoring framework of the site can be connected:
+
+    * `edge-cluster-prometheus-url` the URL of the site's Edge cluster Prometheus service
+    * `edge-monitoring-prometheus-url` the URL of the site's Edge monitoring Prometheus service
+    * `edge-device` a list of monitoring devices that verify end-to-end connectivity
+
+        * `name` the name of the monitoring device (usually a Raspberry Pi). This will usually
+          correspond to its short hostname
+        * `display-name` a user friendly name
+        * `description` an optional description
+
 Device-Group
 ~~~~~~~~~~~~
 
@@ -117,6 +134,13 @@
 * `site`. Reference to the site where this `Device-Group` may be used. Indirectly identifies the
   `Enterprise` as `Site` contains a reference to `Enterprise`.
 
+* `device` related configuration:
+
+   * `mbr`. The maximum bitrate in bits per second that the application will be limited to:
+
+      * `uplink` the `mbr` from device to slice
+      * `downlink` the `mbr` from slice to device
+
 Virtual Cellular Service
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -126,9 +150,11 @@
 * `device-group`. A list of `Device-Group` objects that can participate in this `VCS`. Each
   entry in the list contains both the reference to the `Device-Group` as well as an `enable`
   field which may be used to temporarily remove access to the group.
-* `application`. A list of `Application` objects that are either allowed or denied for this
+* `filter`. A list of `Application` objects that are either allowed or denied for this
   `VCS`. Each entry in the list contains both a reference to the `Application` as well as an
-  `allow` field which can be set to `true` to allow the application or `false` to deny it.
+  `allow` field which can be set to `true` to allow the application or `false` to deny it. It
+  also has a `priority` field which can be used to order the applications when considering the
+  enforcing of their `allow` condition.
 * `template`. Reference to the `Template` that was used to initialize this `VCS`.
 * `upf`. Reference to the User Plane Function (`UPF`) that should be used to process packets
   for this `VCS`. It's permitted for multiple `VCS` to share a single `UPF`.
@@ -144,33 +170,24 @@
 `Application` specifies an application and the endpoints for the application. Applications are
 the termination point for traffic from the UPF. Contains the following fields:
 
-* `endpoint`. A list of endpoints. Each has the following
-  fields:
+* `address`. The DNS name or IP address of the endpoint.
+* `endpoint`. A list of endpoints. Each has the following fields:
 
-   * `name`. Name of the endpoint. Used as a key.
-   * `address`. The DNS name or IP address of the endpoint.
-   * `port-start`. Starting port number.
-   * `port-end`. Ending port number.
-   * `protocol`. `TCP|UDP`, specifies the protocol for the endpoint.
+    * `name`. Name of the endpoint. Used as a key.
+    * `port-start`. Starting port number.
+    * `port-end`. Ending port number.
+    * `protocol`. `TCP|UDP`, specifies the protocol for the endpoint.
+    * `mbr`. The maximum bitrate in bits per second that the application will be limited to:
+
+        * `uplink` the `mbr` from device to application
+        * `downlink` the `mbr` from application to device
+
 * `enterprise`. Link to an `Enterprise` object that owns this application. May be left empty
   to indicate a global application that may be used by multiple enterprises.
 
 Supporting Aether Objects
 -------------------------
 
-AP-List
-~~~~~~~
-
-`AP-List` specifies a list of access points (radios). It has the following fields:
-
-* `access-points`. A list of access points. Each access point has the following:
-
-    * `address`. Hostname of the access point.
-    * `tac`. Type Allocation Code.
-    * `enable`. If set to `true`, the access point is enabled. Otherwise, it is disabled.
-
-* `enterprise`. The `Enterprise` that owns these access points.
-
 Connectivity-Service
 ~~~~~~~~~~~~~~~~~~~~
 
@@ -200,12 +217,19 @@
 * `sst`, `sd`. Slice identifiers.
 * `uplink`, `downlink`. Guaranteed uplink and downlink bandwidth.
 * `traffic-class`. Link to a `Traffic-Class` object that describes the type of traffic.
+* `slice` configuration for slice
+
+    * `mbr` configuration of maximum bit rate in slice
+
+        * `uplink` the `mbr` from device to slice
+        * `downlink` the `mbr` from slice to device
 
 Traffic-Class
 ~~~~~~~~~~~~~
 
 Specifies the class of traffic. Contains the following:
 
+* `arp`. Allocation and Retention Priority.
 * `qci`. QoS class identifier.
 * `pelr`. Packet error loss rate.
 * `pdb`. Packet delay budget.
@@ -213,11 +237,14 @@
 UPF
 ~~~
 
-Specifies the UPF that should forward packets. Has the following fields:
+Specifies the UPF that should forward packets. A UPF can only be used by one VCS at a time.
+Has the following fields:
 
 * `address`. Hostname or IP address of UPF.
 * `port`. Port number of UPF.
 * `enterprise`. Enterprise that owns this UPF.
+* `site`. The Site that this UPF is located at.
+* `config-endpoint` URL for configuring the UPF
 
 .. |postman_link| raw:: html