diff --git a/tools/dev/bin/onos-app b/tools/dev/bin/onos-app
index d6fe562..fb6fff6 100755
--- a/tools/dev/bin/onos-app
+++ b/tools/dev/bin/onos-app
@@ -9,6 +9,7 @@
 
 export URL=http://$node:8181/onos/v1/applications
 export HDR="-HContent-Type:application/octet-stream"
+export HAJ="-HContent-Type:application/json"
 export curl="curl -sS --user $ONOS_WEB_USER:$ONOS_WEB_PASS"
 
 # Prints usage help
@@ -34,6 +35,13 @@
 
 case $cmd in
     list) $curl -X GET $URL;;
+    installUrl!|installUrl)
+        activate="false"
+        [ $cmd = "installUrl!" ] && activate="true"
+        [ $# -lt 3 ] && usage
+        appurl=$3
+        $curl -X POST $HAJ -d '{"url" : "'"$appurl"'", "activate" : "'$activate'" }' $URL
+        ;;
     install!|install)
         [ $cmd = "install!" ] && activate="?activate=true"
         [ $# -lt 3 -o ! -f $app ] && usage
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
index 6ee5c83..f02947a 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.rest.resources;
 
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.app.ApplicationAdminService;
 import org.onosproject.core.Application;
 import org.onosproject.core.ApplicationId;
@@ -32,7 +33,9 @@
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import java.io.IOException;
 import java.io.InputStream;
+import java.net.URL;
 import java.util.Set;
 
 import static org.onlab.util.Tools.nullIsNotFound;
@@ -46,6 +49,9 @@
     private static final String APP_ID_NOT_FOUND = "Application ID is not found";
     private static final String APP_NOT_FOUND = "Application is not found";
 
+    private static final String URL = "url";
+    private static final String ACTIVATE = "activate";
+
     /**
      * Get all installed applications.
      * Returns array of all installed applications.
@@ -80,6 +86,38 @@
      * Install a new application.
      * Uploads application archive stream and optionally activates the
      * application.
+
+     * @param raw   json object containing location (url) of application oar
+     * @return 200 OK; 404; 401
+     */
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.APPLICATION_JSON)
+    public Response installApp(InputStream raw) {
+        Application app;
+        try {
+            ObjectNode jsonTree = (ObjectNode) mapper().readTree(raw);
+            URL url = new URL(jsonTree.get(URL).asText());
+            boolean activate = false;
+            if (jsonTree.has(ACTIVATE)) {
+              activate = jsonTree.get(ACTIVATE).asBoolean();
+            }
+
+            ApplicationAdminService service = get(ApplicationAdminService.class);
+            app = service.install(url.openStream());
+            if (activate) {
+                service.activate(app.id());
+            }
+        } catch (IOException ex) {
+            throw new IllegalArgumentException(ex);
+        }
+        return ok(codec(Application.class).encode(app, this)).build();
+    }
+
+    /**
+     * Install a new application.
+     * Uploads application archive stream and optionally activates the
+     * application.
      *
      * @param activate true to activate app also
      * @param stream   application archive stream
