diff --git a/tests/src/apigw/healthtests/ApiGwEndToEndTests.scala b/tests/src/apigw/healthtests/ApiGwEndToEndTests.scala
index 56018f0..b401a24 100644
--- a/tests/src/apigw/healthtests/ApiGwEndToEndTests.scala
+++ b/tests/src/apigw/healthtests/ApiGwEndToEndTests.scala
@@ -16,6 +16,9 @@
 
 package apigw.healthtests
 
+import java.io.BufferedWriter
+import java.io.File
+import java.io.FileWriter
 import org.junit.runner.RunWith
 import org.scalatest.FlatSpec
 import org.scalatest.Matchers
@@ -64,7 +67,7 @@
             wsk.action.create(name = actionName, artifact = Some(file), expectedExitCode = SUCCESS_EXIT)
 
             // Create the API
-            var rr = wsk.api.create(basepath = Some(testbasepath), relpath = testrelpath, operation = testurlop, action = actionName, apiname = Some(testapiname))
+            var rr = wsk.api.create(basepath = Some(testbasepath), relpath = Some(testrelpath), operation = Some(testurlop), action = Some(actionName), apiname = Some(testapiname))
             rr.stdout should include("ok: created API")
             val apiurl = rr.stdout.split("\n")(1)
             println(s"apiurl: '${apiurl}'")
@@ -79,6 +82,23 @@
             rr.stdout should include regex (s"${actionName}\\s+${testurlop}\\s+${testapiname}\\s+")
             rr.stdout should include(testbasepath + testrelpath)
 
+            // Recreate the API using a JSON swagger file
+            rr = wsk.api.get(basepathOrApiName = Some(testbasepath))
+            val swaggerfile = File.createTempFile("api", ".json")
+            swaggerfile.deleteOnExit()
+            val bw = new BufferedWriter(new FileWriter(swaggerfile))
+            bw.write(rr.stdout)
+            bw.close()
+
+            // Delete API to that it can be recreated again using the generated swagger file
+            val deleteApiResult = wsk.api.delete(basepathOrApiName = testbasepath, expectedExitCode = DONTCARE_EXIT)
+
+            // Create the API again, but use the swagger file this time
+            rr = wsk.api.create(swagger = Some(swaggerfile.getAbsolutePath()))
+            rr.stdout should include("ok: created API")
+            val swaggerapiurl = rr.stdout.split("\n")(1)
+            println(s"apiurl: '${swaggerapiurl}'")
+
             // Call the API URL and validate the results
             val response = RestAssured.given().config(sslconfig).get(s"$apiurl?$urlqueryparam=$urlqueryvalue")
             response.statusCode should be(200)
@@ -88,9 +108,9 @@
         }
         finally {
             println("Deleting action: "+actionName)
-            val deleteActionResult = wsk.action.delete(name = actionName, expectedExitCode = DONTCARE_EXIT)
+            val finallydeleteActionResult = wsk.action.delete(name = actionName, expectedExitCode = DONTCARE_EXIT)
             println("Deleting API: "+testbasepath)
-            val deleteApiResult = wsk.api.delete(basepathOrApiName = testbasepath, expectedExitCode = DONTCARE_EXIT)
+            val finallydeleteApiResult = wsk.api.delete(basepathOrApiName = testbasepath, expectedExitCode = DONTCARE_EXIT)
         }
     }
 }
diff --git a/tests/src/common/Wsk.scala b/tests/src/common/Wsk.scala
index 8448ee5..5273e80 100644
--- a/tests/src/common/Wsk.scala
+++ b/tests/src/common/Wsk.scala
@@ -755,15 +755,19 @@
       * if the code is anything but DONTCARE_EXIT, assert the code is as expected
       */
     def create(
-        basepath: Option[String] = Some("/"),
-        relpath: String,
-        operation: String,
-        action: String,
+        basepath: Option[String] = None,
+        relpath: Option[String] = None,
+        operation: Option[String] = None,
+        action: Option[String] = None,
         apiname: Option[String] = None,
         swagger: Option[String] = None,
         expectedExitCode: Int = SUCCESS_EXIT)(
             implicit wp: WskProps): RunResult = {
-        val params = Seq(noun, "create", "--auth", wp.authKey, basepath.get, relpath, operation, action) ++
+        val params = Seq(noun, "create", "--auth", wp.authKey) ++
+          { basepath map { b => Seq(b) } getOrElse Seq() } ++
+          { relpath map { r => Seq(r) } getOrElse Seq() } ++
+          { operation map { o => Seq(o) } getOrElse Seq() } ++
+          { action map { aa => Seq(aa) } getOrElse Seq() } ++
           { apiname map { a => Seq("--apiname", a) } getOrElse Seq() } ++
           { swagger map { s => Seq("--config-file", s) } getOrElse Seq() }
         cli(wp.overrides ++ params, expectedExitCode, showCmd = true)
diff --git a/tests/src/whisk/core/cli/test/ApiGwTests.scala b/tests/src/whisk/core/cli/test/ApiGwTests.scala
index 819d9a4..4fd1041 100644
--- a/tests/src/whisk/core/cli/test/ApiGwTests.scala
+++ b/tests/src/whisk/core/cli/test/ApiGwTests.scala
@@ -42,7 +42,7 @@
     it should "reject an api commands with an invalid path parameter" in {
         val badpath = "badpath"
 
-        var rr = wsk.api.create(basepath = Some("/basepath"), relpath = badpath, operation = "GET", action = "action", expectedExitCode = ANY_ERROR_EXIT)
+        var rr = wsk.api.create(basepath = Some("/basepath"), relpath = Some(badpath), operation = Some("GET"), action = Some("action"), expectedExitCode = ANY_ERROR_EXIT)
         rr.stderr should include (s"'${badpath}' must begin with '/'")
 
         rr = wsk.api.delete(basepathOrApiName = "/basepath", relpath = Some(badpath), operation = Some("GET"), expectedExitCode = ANY_ERROR_EXIT)
@@ -68,7 +68,7 @@
         try {
             println("cli user: "+cliuser+"; cli namespace: "+clinamespace)
 
-            var rr = wsk.api.create(basepath = Some(testbasepath), relpath = testrelpath, operation = testurlop, action = actionName, apiname = Some(testapiname))
+            var rr = wsk.api.create(basepath = Some(testbasepath), relpath = Some(testrelpath), operation = Some(testurlop), action = Some(actionName), apiname = Some(testapiname))
             rr.stdout should include("ok: created API")
             rr = wsk.api.list(basepathOrApiName = Some(testbasepath), relpath = Some(testrelpath), operation = Some(testurlop))
             rr.stdout should include("ok: APIs")
