diff --git a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricWebResource.java b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricWebResource.java
index 5878e6b..c35d975 100644
--- a/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricWebResource.java
+++ b/apps/cordfabric/src/main/java/org/onosproject/cordfabric/FabricWebResource.java
@@ -42,6 +42,11 @@
 
     private static final FabricVlanCodec VLAN_CODEC = new FabricVlanCodec();
 
+    /**
+     * Get all CORD fabric VLANs.
+     *
+     * @return array of cord VLANs in the system.
+     */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public Response getVlans() {
@@ -53,6 +58,14 @@
         return ok(result.toString()).build();
     }
 
+    /**
+     * Create a CORD fabric VLAN.
+     *
+     * @param input JSON stream describing new VLAN
+     * @return status of the request - CREATED if the JSON is correct,
+     * INTERNAL_SERVER_ERROR if the JSON is invalid
+     * @throws IOException if the JSON is invalid
+     */
     @POST
     @Path("add")
     @Consumes(MediaType.APPLICATION_JSON)
@@ -66,9 +79,15 @@
         return Response.ok().build();
     }
 
+    /**
+     * Delete a CORD fabric VLAN.
+     *
+     * @param vlan identifier of the VLAN to remove
+     * @return status of the request - OK
+     */
     @DELETE
     @Path("{vlan}")
-    public Response deleteVlan(@PathParam("vlan") String vlan) throws IOException {
+    public Response deleteVlan(@PathParam("vlan") String vlan) {
         VlanId vlanId = VlanId.vlanId(Short.parseShort(vlan));
 
         FabricService fabricService = get(FabricService.class);
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
index 384ff0f..257b42a 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/PolicyWebResource.java
@@ -34,11 +34,20 @@
 import java.io.InputStream;
 import java.util.List;
 
+/**
+ * Query, create and remove segment routing plicies.
+ */
 @Path("policy")
 public class PolicyWebResource extends AbstractWebResource {
 
     private static final PolicyCodec POLICY_CODEC = new PolicyCodec();
 
+    /**
+     * Get all segment routing policies.
+     * Returns an array of segment routing policies.
+     *
+     * @return status of OK
+     */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public Response getPolicy() {
@@ -50,6 +59,14 @@
         return ok(result.toString()).build();
     }
 
+    /**
+     * Create a new segment routing policy.
+     *
+     * @param input JSON stream for policy to create
+     * @return status of the request - OK if the policy is created,
+     * INTERNAL_SERVER_ERROR if the JSON is invalid or the policy cannot be created
+     * @throws IOException
+     */
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
     public Response createPolicy(InputStream input) throws IOException {
@@ -66,6 +83,14 @@
         }
     }
 
+    /**
+     * Delete a segment routing policy.
+     *
+     * @param input JSON stream for policy to delete
+     * @return status of the request - OK if the policy is removed,
+     * INTERNAL_SERVER_ERROR otherwise
+     * @throws IOException if JSON is invalid
+     */
     @DELETE
     @Consumes(MediaType.APPLICATION_JSON)
     public Response removePolicy(InputStream input) throws IOException {
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
index 4ed4b8c..fb30308 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/web/TunnelWebResource.java
@@ -34,11 +34,20 @@
 import java.io.InputStream;
 import java.util.List;
 
+/**
+ * Query, create and remove segment routing tunnels.
+ */
 @Path("tunnel")
 public class TunnelWebResource extends AbstractWebResource {
 
     private static final TunnelCodec TUNNEL_CODEC = new TunnelCodec();
 
+    /**
+     * Get all segment routing tunnels.
+     * Returns an array of segment routing tunnels.
+     *
+     * @return status of OK
+     */
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     public Response getTunnel() {
@@ -50,6 +59,14 @@
         return ok(result.toString()).build();
     }
 
+    /**
+     * Create a new segment routing tunnel.
+     *
+     * @param input JSON stream for tunnel to create
+     * @return status of the request - OK if the tunnel is created,
+     * INTERNAL_SERVER_ERROR if the JSON is invalid or the tunnel cannot be created
+     * @throws IOException if the JSON is invalid
+     */
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
     public Response createTunnel(InputStream input) throws IOException {
@@ -62,6 +79,14 @@
         return Response.ok().build();
     }
 
+    /**
+     * Delete a segment routing tunnel.
+     *
+     * @param input JSON stream for tunnel to delete
+     * @return status of the request - OK if the tunnel is removed,
+     * INTERNAL_SERVER_ERROR otherwise
+     * @throws IOException if JSON is invalid
+     */
     @DELETE
     @Consumes(MediaType.APPLICATION_JSON)
     public Response removeTunnel(InputStream input) throws IOException {
diff --git a/apps/test/demo/pom.xml b/apps/test/demo/pom.xml
index 009c345..27dd667 100644
--- a/apps/test/demo/pom.xml
+++ b/apps/test/demo/pom.xml
@@ -34,6 +34,11 @@
     <properties>
         <onos.app.name>org.onosproject.demo</onos.app.name>
         <web.context>/onos/demo</web.context>
+        <api.title>ONOS Flow Throughput Test App API</api.title>
+        <api.description>
+            APIs for interacting with the flow throughput test application.
+        </api.description>
+        <api.package>org.onosproject.demo</api.package>
     </properties>
 
     <dependencies>
@@ -82,6 +87,10 @@
                 <configuration>
                     <instructions>
                         <_wab>src/main/webapp/</_wab>
+                        <Include-Resource>
+                            WEB-INF/classes/apidoc/swagger.json=target/swagger.json,
+                            {maven-resources}
+                        </Include-Resource>
                         <Bundle-SymbolicName>
                             ${project.groupId}.${project.artifactId}
                         </Bundle-SymbolicName>
diff --git a/apps/test/demo/src/main/java/org/onosproject/demo/DemoResource.java b/apps/test/demo/src/main/java/org/onosproject/demo/DemoResource.java
index 568012c..e0c97dd 100644
--- a/apps/test/demo/src/main/java/org/onosproject/demo/DemoResource.java
+++ b/apps/test/demo/src/main/java/org/onosproject/demo/DemoResource.java
@@ -37,7 +37,13 @@
 public class DemoResource extends BaseResource {
 
 
-
+    /**
+     * Start the flow test.
+     *
+     * @param input JSON describing how to run the flow test
+     * @return response code OK
+     * @throws IOException if the JSON processing fails
+     */
     @POST
     @Path("flowTest")
     @Consumes(MediaType.APPLICATION_JSON)
@@ -49,6 +55,13 @@
         return Response.ok(demo.flowTest(Optional.ofNullable(cfg)).toString()).build();
     }
 
+    /**
+     * Set up the flow test.
+     *
+     * @param input JSON describing how to configure the flow test
+     * @return response code OK
+     * @throws IOException if the JSON processing fails
+     */
     @POST
     @Path("setup")
     @Consumes(MediaType.APPLICATION_JSON)
@@ -70,10 +83,15 @@
         return Response.ok(mapper.createObjectNode().toString()).build();
     }
 
+    /**
+     * Tear down the flow test.
+     *
+     * @return response code OK
+     */
     @GET
     @Path("teardown")
     @Produces(MediaType.APPLICATION_JSON)
-    public Response tearDown() throws IOException {
+    public Response tearDown() {
         ObjectMapper mapper = new ObjectMapper();
         DemoAPI demo = get(DemoAPI.class);
         demo.tearDown();
diff --git a/apps/virtualbng/pom.xml b/apps/virtualbng/pom.xml
index e42f888..835272a 100644
--- a/apps/virtualbng/pom.xml
+++ b/apps/virtualbng/pom.xml
@@ -34,6 +34,12 @@
     <properties>
         <onos.app.name>org.onosproject.virtualbng</onos.app.name>
         <web.context>/onos/virtualbng</web.context>
+        <api.version>1.0.0</api.version>
+        <api.title>ONOS Virtual BNG Gateway REST API</api.title>
+        <api.description>
+            APIs for interacting with the Virtual Broadband Network Gateway (BNG) application.
+        </api.description>
+        <api.package>org.onosproject.virtualbng</api.package>
     </properties>
 
     <dependencies>
@@ -72,6 +78,10 @@
                 <configuration>
                     <instructions>
                         <_wab>src/main/webapp/</_wab>
+                        <Include-Resource>
+                            WEB-INF/classes/apidoc/swagger.json=target/swagger.json,
+                            {maven-resources}
+                        </Include-Resource>
                         <Bundle-SymbolicName>
                             ${project.groupId}.${project.artifactId}
                         </Bundle-SymbolicName>
@@ -98,4 +108,4 @@
         </plugins>
     </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java b/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java
index 36f8832..c6a9c9b 100644
--- a/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java
+++ b/apps/virtualbng/src/main/java/org/onosproject/virtualbng/VbngResource.java
@@ -37,13 +37,21 @@
 import org.slf4j.Logger;
 
 /**
- * This class provides REST services to virtual BNG.
+ * REST services to interact with the virtual BNG.
  */
 @Path("privateip")
 public class VbngResource extends AbstractWebResource {
 
     private final Logger log = getLogger(getClass());
 
+    /**
+     * Create a new virtual BNG connection.
+     *
+     * @param privateIp IP Address for the BNG private network
+     * @param mac MAC address for the host
+     * @param hostName name of the host
+     * @return public IP address for the new connection
+     */
     @POST
     @Path("{privateip}/{mac}/{hostname}")
     public String privateIpAddNotification(@PathParam("privateip")
@@ -77,6 +85,12 @@
         }
     }
 
+    /**
+     * Delete a virtual BNG connection.
+     *
+     * @param privateIp IP Address for the BNG private network
+     * @return public IP address for the new connection
+     */
     @DELETE
     @Path("{privateip}")
     public String privateIpDeleteNotification(@PathParam("privateip")
@@ -101,6 +115,11 @@
         }
     }
 
+    /**
+     * Query virtual BNG map.
+     *
+     * @return IP Address map
+     */
     @GET
     @Path("map")
     @Produces(MediaType.APPLICATION_JSON)
@@ -119,4 +138,4 @@
 
         return ok(result.toString()).build();
     }
-}
\ No newline at end of file
+}
