Don't assume apihost is https for sdk and action urls (#2748)

* Don't assume apihost is https for sdk and action urls

Reuse the getURLBase utility method when computing the URL for sdk
downloads and action URLs.

This fixes #2720 and fixes #2719.

* Cleanup some trailing whitespace I missed

* Missed this import in last-second rebase

* Update debug messages to match `GetURLBase` method name
diff --git a/whisk/action.go b/whisk/action.go
index e2cfed5..40dad4d 100644
--- a/whisk/action.go
+++ b/whisk/action.go
@@ -121,33 +121,39 @@
 Returns the URL of an action as a string. A valid API host, path and version must be passed. A package that contains the
 action must be passed as well. An empty string must be passed if the action is not packaged.
  */
-func (action Action) ActionURL(apiHost string, apiPath string, apiVersion string, pkg string) (actionURL string) {
-    webActionPath := "https://%s%s/%s/web/%s/%s/%s"
-    actionPath := "https://%s%s/%s/namespaces/%s/actions/%s"
+func (action Action) ActionURL(apiHost string, apiPath string, apiVersion string, pkg string) (string, error) {
+    baseURL, err := GetURLBase(apiHost, apiPath)
+    if err != nil {
+        Debug(DbgError, "GetURLBase(%s, %s) failed: %s\n", apiHost, apiPath, err)
+        return "", err
+    }
+    webActionPath := "%s/%s/web/%s/%s/%s"
+    actionPath := "%s/%s/namespaces/%s/actions/%s"
     packagedActionPath := actionPath + "/%s"
     namespace := strings.Split(action.Namespace, "/")[0]
     namespace = strings.Replace(url.QueryEscape(namespace), "+", "%20", -1)
     name := strings.Replace(url.QueryEscape(action.Name), "+", "%20", -1)
     pkg = strings.Replace(url.QueryEscape(pkg), "+", "%20", -1)
 
+    var actionURL string
     if action.WebAction() {
         if len(pkg) == 0 {
             pkg = "default"
         }
 
-        actionURL = fmt.Sprintf(webActionPath, apiHost, apiPath, apiVersion, namespace, pkg, name)
+        actionURL = fmt.Sprintf(webActionPath, baseURL, apiVersion, namespace, pkg, name)
         Debug(DbgInfo, "Web action URL: %s\n", actionURL)
     } else {
         if len(pkg) == 0 {
-            actionURL = fmt.Sprintf(actionPath, apiHost, apiPath, apiVersion, namespace, name)
+            actionURL = fmt.Sprintf(actionPath, baseURL, apiVersion, namespace, name)
             Debug(DbgInfo, "Packaged action URL: %s\n", actionURL)
         } else {
-            actionURL = fmt.Sprintf(packagedActionPath, apiHost, apiPath, apiVersion, namespace, pkg, name)
+            actionURL = fmt.Sprintf(packagedActionPath, baseURL, apiVersion, namespace, pkg, name)
             Debug(DbgInfo, "Action URL: %s\n", actionURL)
         }
     }
 
-    return actionURL
+    return actionURL, nil
 }
 
 ////////////////////
diff --git a/whisk/client.go b/whisk/client.go
index 5fe0b14..3d6b655 100644
--- a/whisk/client.go
+++ b/whisk/client.go
@@ -127,7 +127,7 @@
     if len(config.Host) == 0 {
         errStr = wski18n.T("Unable to create request URL, because OpenWhisk API host is missing")
     } else if config.BaseURL == nil {
-        config.BaseURL, err = GetURLBase(config.Host)
+        config.BaseURL, err = GetUrlBase(config.Host)
         if err != nil {
             Debug(DbgError, "Unable to create request URL, because the api host %s is invalid\n", config.Host, err)
             errStr = wski18n.T("Unable to create request URL, because the api host '{{.host}}' is invalid: {{.err}}",
diff --git a/whisk/sdk.go b/whisk/sdk.go
index 9269a83..b0e8708 100644
--- a/whisk/sdk.go
+++ b/whisk/sdk.go
@@ -40,7 +40,11 @@
 // Install artifact {component = docker || swift || iOS}
 func (s *SdkService) Install(relFileUrl string) (*http.Response, error) {
 
-    urlStr := fmt.Sprintf("https://%s/%s", s.client.Config.BaseURL.Host, relFileUrl)
+    baseURL := s.client.Config.BaseURL
+    // Remove everything but the scheme, host, and port
+    baseURL.Path, baseURL.RawQuery, baseURL.Fragment = "", "", ""
+
+    urlStr := fmt.Sprintf("%s/%s", baseURL, relFileUrl)
 
     req, err := http.NewRequest("GET", urlStr, nil)
     if err != nil {
diff --git a/whisk/util.go b/whisk/util.go
index 329e9ea..9e1087d 100644
--- a/whisk/util.go
+++ b/whisk/util.go
@@ -22,6 +22,7 @@
     "fmt"
     "net/url"
     "reflect"
+    "strings"
 
     "github.com/fatih/color"
     "github.com/google/go-querystring/query"
@@ -80,3 +81,26 @@
     output, _ := prettyjson.Marshal(v)
     fmt.Fprintln(color.Output, string(output))
 }
+
+func GetURLBase(host string, path string) (*url.URL, error)  {
+    if len(host) == 0 {
+        errMsg := wski18n.T("An API host must be provided.\n")
+        whiskErr := MakeWskError(errors.New(errMsg), EXIT_CODE_ERR_GENERAL,
+            DISPLAY_MSG, DISPLAY_USAGE)
+        return nil, whiskErr
+    }
+
+    if !strings.HasPrefix(host, "http") {
+        host = "https://" + host
+    }
+
+    urlBase := fmt.Sprintf("%s%s", host, path)
+    url, err := url.Parse(urlBase)
+
+    if len(url.Scheme) == 0 || len(url.Host) == 0 {
+        urlBase = fmt.Sprintf("https://%s%s", host, path)
+        url, err = url.Parse(urlBase)
+    }
+
+    return url, err
+}
diff --git a/whisk/wskprops.go b/whisk/wskprops.go
index 64f621c..c607c55 100644
--- a/whisk/wskprops.go
+++ b/whisk/wskprops.go
@@ -65,7 +65,7 @@
     Source string
 }
 
-func GetURLBase(host string) (*url.URL, error) {
+func GetUrlBase(host string) (*url.URL, error) {
     urlBase := fmt.Sprintf("%s/api", host)
     url, err := url.Parse(urlBase)
 
@@ -81,7 +81,7 @@
     var config Config
     config.Host = dep.APIHost
     if len(config.Host) != 0 {
-        v, err := GetURLBase(config.Host)
+        v, err := GetUrlBase(config.Host)
         if err == nil {
             config.BaseURL = v
         }
diff --git a/wski18n/i18n_resources.go b/wski18n/i18n_resources.go
index 9f839e3..206cd63 100644
--- a/wski18n/i18n_resources.go
+++ b/wski18n/i18n_resources.go
@@ -109,12 +109,12 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/de_DE.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
 
-var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x98\x51\x8f\xe2\x36\x10\xc7\xdf\xf9\x14\xa3\xbc\x2c\x95\xb8\x7c\x80\xeb\x13\x6a\x51\x41\xbd\x1e\xa8\x07\xbd\x87\x6e\x55\x99\x78\x20\xa3\x0d\xb6\xcf\x76\xa0\x1c\xca\x77\xaf\xec\xc0\x1d\xbd\x4d\x48\x62\x72\xdb\x7d\xda\xc8\xeb\xf9\xcf\xcf\xe3\xb1\x3d\xc3\x9f\x03\x80\xd3\x00\x00\x20\x22\x1e\xbd\x85\x68\x25\xd8\x3a\x43\xb0\x12\x18\xe7\xa0\x65\x6e\x11\xa4\xb2\x24\x85\x81\x87\xd3\x29\x3e\x7f\x17\xc5\x43\x34\x2a\xed\xac\x66\xc2\x64\xcc\x0d\x37\x08\xbc\x85\x6b\x81\x68\x00\x50\x8c\xea\xfd\x27\x1a\x99\x45\x98\x2e\x97\x0b\xd0\xf8\x29\x47\x63\x61\x23\x35\x2c\x56\x4b\x4f\xe2\xa5\x8b\xe2\xc1\xab\xa2\xd6\x45\xd1\x48\x14\x20\x19\x08\xf9\xcb\xa4\x77\xc8\x1b\x92\x81\x90\x3f\x4f\xde\x4d\x96\x93\xbe\x39\x6f\xab\x86\x6e\xfa\xfc\x43\xff\xbb\x7e\x43\xb3\x01\x93\x29\x85\x82\xd7\x1c\x0c\x37\x61\xf5\xfb\xbb\x73\xee\x07\x42\xdf\xef\xa1\x5d\xa4\x2f\x01\x71\x72\x4e\x28\xd7\x59\x50\x74\x1b\x75\x2a\x71\x66\x62\xcf\x32\xe2\xa1\x14\xad\xcd\x2b\x9d\x4f\xb4\x96\x1a\x50\x24\x92\x93\xd8\x7e\x11\x59\x4b\x7e\x6c\xf4\xdc\xce\xf6\x86\x5b\x12\x64\x89\x65\xf4\xf9\xca\xbc\xa5\xd7\x06\xd3\xa6\xd4\xe5\x1c\x6c\x7a\x3e\x0e\x2c\xb7\x29\x0a\x4b\x89\x77\x01\x29\x32\x8e\xba\x4b\x96\x76\x11\xab\x04\x1b\xe7\x36\x95\x9a\x3e\x97\x36\x4f\x78\x04\x32\x20\xa4\x85\x44\x8a\x0d\x6d\x73\x8d\x1c\x86\x6f\xde\x38\x6d\xf7\x1f\xb7\x5c\xd2\xc8\x7f\xa8\x41\x0b\x96\xab\x84\xfb\x49\xee\x76\x4c\x70\xd8\x30\xca\x90\x03\xcf\xcb\x45\x8b\x72\xbd\x6e\x34\xd7\x58\x43\xd2\xce\xb6\xd2\xed\x7b\x09\x24\x2c\xea\x0d\x4b\x10\x94\x96\x7b\xe2\xc8\x7f\x04\x21\x2f\x77\x98\x51\x52\x18\xf4\xd9\x06\xf8\x8f\xc2\xc4\x22\xaf\xc1\x08\xd3\xea\x16\x0d\xef\x40\xb0\x2c\x34\x22\xcf\xec\x2b\xdd\x2f\x53\x84\x8d\xcc\x32\x79\x70\x79\xcf\x94\xca\x2e\x99\x86\xfe\x58\x1c\x98\xdb\xcf\x04\x69\x8f\xbc\x31\x85\x03\xc5\x5e\xdf\x25\xf6\x6a\x0f\xf6\x57\x2d\xb7\x20\xc5\xb4\x29\x5f\xaa\x3d\x6a\x43\x52\x74\x7b\x64\x5a\x48\xdc\x59\xa8\x85\xbe\x7b\xed\x05\xc3\x01\xfb\xa1\x6a\x8f\xb2\xce\x29\xfb\x4f\x3e\x76\x00\xb8\x65\xdb\x2e\x02\x2e\x80\xcf\xf8\xef\x2b\xfd\xba\x48\xb6\x83\x74\x1d\x43\xcf\x90\x5d\x24\xdb\x41\x9e\x2b\xf1\x9e\x39\x3b\xaa\xb6\x8c\xa7\xab\xc5\xfb\x0e\x68\x17\xcd\x9a\x9b\xfd\xfc\x30\xf9\x47\x21\x86\xcb\x55\x6d\x2c\xfb\xd2\xd5\x7a\x41\x3f\x50\x14\x0f\x31\xfc\xe1\x27\x5c\xca\x76\xa6\x11\x1e\x23\x96\x58\xda\xe3\x63\x04\xee\xf5\x7b\x8c\x48\x5c\x06\xe2\xda\x27\xe1\x7b\xfb\x6d\xd8\x95\xf2\xae\xbd\xbc\x44\x01\x5b\xd0\x28\xd0\x04\xa0\x65\x82\xc6\x78\x85\x4f\x39\xea\x63\x4d\x27\xd4\x05\xa9\xbb\x64\x25\xe4\xe9\x14\xef\xcc\xb6\x28\x60\x98\x48\x8e\x6e\xb2\xfb\x5b\x14\x75\x25\x69\xfd\xfc\xda\x32\x27\x91\x42\x60\xe2\x77\xb9\x2c\x96\x46\x20\x35\x58\xda\x21\x07\x99\xdb\x18\x86\x3e\xad\xdd\xee\xe7\x06\xda\x61\xdc\xaf\xdb\xb9\xa1\x1c\xc1\x1a\x13\x96\x1b\x84\xb9\x42\xf1\x31\x25\xf3\x04\xe3\xc5\x0c\x52\x69\xac\xab\xbe\x77\x64\x0c\x89\x6d\x40\x8b\xd9\x56\xf9\x0e\x64\x57\xfd\x30\x45\xa5\xa4\xcb\x10\xf7\xe1\x7a\x6f\x32\x40\xe5\x79\xbc\xab\x4b\x0e\xf5\x54\xb9\xa4\x9b\x51\x80\xe1\x22\x43\x66\xf0\x6b\x0f\x04\x1f\xa7\xb3\x0f\xbf\xfe\x3d\x5e\xcc\xa6\xee\x8e\x24\x01\xf1\xc1\x3c\x29\x2d\x95\x81\x5c\x70\xd4\x9e\xc9\x1c\x8d\xc5\x1d\x4c\xe7\xbf\x4d\x80\x93\xc6\xc4\x4a\x7d\x8c\xeb\xf2\xeb\x45\x11\x7a\x09\xc2\xc1\xcd\x8d\x99\x22\x1f\xf0\x58\x69\x69\xe5\xe8\xdb\x51\xc1\x76\xe8\xef\xcf\x6f\x67\x4b\x6d\x1d\x75\x39\xec\xb8\x51\x5b\xc2\x6b\xf8\xf9\x62\xf2\xbe\x5c\xe5\x77\x0a\xe1\xff\xb8\x80\xda\x5e\xfe\xaa\x4f\x38\x77\xdf\xf5\xfc\xe3\xd5\x72\xda\x4f\xf2\xbd\x84\xe7\x5e\x96\x6c\xd1\x58\x12\xdb\xd8\xff\x00\xc1\x8c\x77\xa8\x98\x4d\x41\x6e\xca\x7b\xe0\xb9\xde\x86\x32\xec\x3b\xd3\x5e\x3d\xb6\x0b\xf6\xe0\xaf\xc1\xbf\x01\x00\x00\xff\xff\x77\x17\x9a\xfd\x9f\x18\x00\x00")
+var _wski18nResourcesEn_usAllJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x98\x51\x6f\xdb\x36\x10\xc7\xdf\xfd\x29\x0e\x7a\x71\x06\xb8\xfa\x00\xdd\x53\xb0\x19\x73\xb0\xae\x31\x56\x67\x7d\x58\x86\x81\x16\xcf\xd6\x21\x12\xc9\x92\x94\x3d\xd7\xd0\x77\x1f\x48\xd9\xb5\xd7\x48\x96\x44\x2b\x59\x9e\x62\x30\xbc\xff\xfd\x78\x3c\x1e\x8f\xfa\x73\x04\xb0\x1f\x01\x00\x44\xc4\xa3\xf7\x10\x3d\x08\xb6\xcc\x10\xac\x04\xc6\x39\x68\x59\x58\x04\xa9\x2c\x49\x61\x60\xbc\xdf\xc7\x87\xdf\x65\x39\x8e\x26\x95\x9d\xd5\x4c\x98\x8c\xb9\xe1\x16\x81\xf7\x70\x2e\x10\x8d\x00\xca\x49\xb3\xff\x44\x23\xb3\x08\xb3\xc5\x62\x0e\x1a\xbf\x14\x68\x2c\xac\xa4\x86\xf9\xc3\xc2\x93\x78\xe9\xb2\x1c\x7b\x55\xd4\xba\x2c\x5b\x89\x02\x24\x03\x21\x7f\x99\x0e\x0e\x79\x41\x32\x10\xf2\xe7\xe9\x87\xe9\x62\x3a\x34\xe7\x65\xd5\xd0\x4d\xbf\xff\x34\xfc\xae\x5f\xd0\x6c\xc1\x64\x4a\xa1\xe0\x0d\x07\xc3\x4d\x78\xf8\xfd\xc3\x21\xf7\x03\xa1\xaf\xf7\xd0\x2d\xd2\xc7\x80\x38\x39\x27\x54\xe8\x2c\x28\xba\xad\x3a\xb5\x38\x77\x62\xc3\x32\xe2\xa1\x14\x9d\xcd\x6b\x9d\x4f\xb5\x96\x1a\x50\x24\x92\x93\x58\x7f\x13\x59\x4a\xbe\x6b\xf5\xdc\xcd\xf6\x82\x5b\x12\x64\x89\x65\xf4\xf5\xcc\xbc\xa3\xd7\x16\xd3\xb6\xd4\xe5\x1c\x6c\x7a\x38\x0e\xac\xb0\x29\x0a\x4b\x89\x77\x01\x29\x32\x8e\xba\x4f\x96\xf6\x11\xab\x05\xbb\x2d\x6c\x2a\x35\x7d\xad\x6c\x9e\x70\x07\x64\x40\x48\x0b\x89\x14\x2b\x5a\x17\x1a\x39\xdc\xbc\x7b\xe7\xb4\xdd\x7f\xdc\x72\x49\x23\xff\xa1\x01\x2d\x58\xae\x1e\x4e\xc0\xed\xfc\x0e\x52\x69\x2c\xe4\x85\xdb\x5f\x04\xa5\xe5\x86\x38\xf2\xf8\x51\x34\x31\xb4\x58\x75\xd8\xa0\xd7\xbf\x77\x7f\x92\x79\xce\x04\x87\x15\xa3\x0c\x39\xf0\xa2\x92\x12\xd5\xd6\xba\xd1\x42\x63\x83\xeb\x6e\xb6\xb5\x6e\x3f\x4a\x20\x61\x51\xaf\x58\x72\x0a\xd2\x8f\x20\xe4\xb1\x5c\x1b\x25\x85\x41\x7f\xb0\x00\xff\x51\x98\x58\xe4\x0d\x18\x61\x5a\xfd\xa2\xe1\x1d\x08\x96\x85\x46\xe4\x99\x7d\xad\xfb\x45\x8a\xb0\x92\x59\x26\xb7\xee\x88\x33\xa5\xb2\xe3\xa1\x42\x5f\x01\xb6\xcc\xa5\x6e\x82\xb4\x41\xde\x7a\x5a\x03\xc5\xde\x5e\xbd\x7e\xb3\x35\xec\xa4\xe5\x16\xa4\x98\x36\xd5\xa5\xbc\x41\x6d\x48\x8a\x7e\xf7\x69\x07\x89\x2b\x7b\xd2\xd0\x2b\xbe\xbb\x60\x38\xe0\x30\x54\xdd\x51\x96\x05\x65\xff\xc9\xc7\x1e\x00\x97\x6c\xbb\x45\xc0\x05\xf0\x19\xff\x75\x5d\x6e\x1f\xc9\x6e\x90\xee\x71\x34\x30\x64\x1f\xc9\x6e\x90\x87\x47\xc7\xc0\x9c\x3d\x55\x3b\xc6\xd3\x3d\x3b\x86\x0e\x68\x1f\xcd\x86\xca\x7e\xb8\x98\xfc\xa5\x10\xc3\xb1\x54\x1b\xcb\xbe\x35\x12\x5e\xd0\x0f\x94\xe5\x38\x86\x3f\xfc\x84\x63\x93\xc2\x34\xc2\x63\xc4\x12\x4b\x1b\x7c\x8c\xc0\xdd\x7e\x8f\x11\x89\xe3\x40\xdc\x78\x25\xbc\xb4\xdf\x96\x5d\xa9\x6a\xed\xf1\x26\x0a\xd8\x82\x56\x81\x36\x00\x2d\x13\x34\xc6\x2b\x7c\x29\x50\xef\x1a\xfa\xbe\x3e\x48\xfd\x25\x6b\x21\xf7\xfb\x38\x37\xeb\xb2\x84\x9b\x44\x72\x74\x93\xdd\xdf\xb2\x6c\xea\xbe\x9b\xe7\x37\xb6\x39\x89\x14\x02\x13\xbf\xcb\x55\xb3\x34\x01\xa9\xc1\x52\x8e\x1c\x64\x61\x63\xb8\xf1\x69\xed\x76\xbf\x30\xd0\x0d\xe3\x7a\xdd\xde\x6f\xe7\x09\x2c\x31\x61\x85\x41\xb8\x57\x28\x3e\xa7\x64\x9e\x4e\x8f\x00\x32\x90\x93\x31\x24\xd6\x01\xaf\xe9\xae\xca\x57\x20\xbb\xee\x87\x29\xaa\x24\x5d\x86\xb8\x1f\x65\x39\x76\xf2\x54\x9d\xc7\xab\x3e\x08\x84\x7a\xaa\x5d\xd2\xc5\x28\xc0\xcd\x3c\x43\x66\xf0\xf4\xdc\x83\xcf\xb3\xbb\x4f\xbf\xfe\x7d\x3b\xbf\x9b\xb9\x1a\x49\x02\xe2\xad\x79\x52\x5a\x2a\x03\x85\xe0\xa8\x3d\x93\xd9\x19\x8b\x39\xcc\xee\x7f\x9b\x02\x27\x8d\x89\x95\x7a\x17\x37\xe5\xd7\xab\x22\x0c\x12\x84\xad\x9b\x1b\x33\x45\x3e\xe0\xb1\xd2\xd2\xca\xc9\xf7\xa3\x82\xe5\xe8\xeb\xe7\xf7\xb3\xa5\xb6\x8e\xba\x1a\x76\xdc\xa8\x2d\xe1\x39\xfc\xfd\x7c\xfa\xb1\x5a\xe5\x0b\x85\xf0\x7f\x5c\x40\xe3\x67\x8b\xb3\x77\xc2\xe1\x43\x43\x33\xff\xed\xc3\x62\x36\x4c\xf2\xbd\x86\xe7\x41\x96\x6c\xd1\x58\x12\xeb\xd8\x7f\x6b\x61\xc6\x3b\x54\xcc\xa6\x20\x57\x55\x1d\x78\xae\xb7\xa2\x0c\x87\xce\xb4\x37\x8f\xed\x82\x3d\xfa\x6b\xf4\x6f\x00\x00\x00\xff\xff\xc3\xb5\x3e\xea\x8a\x19\x00\x00")
 
 func wski18nResourcesEn_usAllJsonBytes() ([]byte, error) {
     return bindataRead(
@@ -129,7 +129,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 6303, mode: os.FileMode(420), modTime: time.Unix(1503937683, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/en_US.all.json", size: 6538, mode: os.FileMode(420), modTime: time.Unix(1506031828, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -149,7 +149,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/es_ES.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -169,7 +169,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/fr_FR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -189,7 +189,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/it_IT.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -209,7 +209,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/ja_JA.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -229,7 +229,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/ko_KR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -249,7 +249,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/pt_BR.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -269,7 +269,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/zh_Hans.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
@@ -289,7 +289,7 @@
         return nil, err
     }
 
-    info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1500156160, 0)}
+    info := bindataFileInfo{name: "wski18n/resources/zh_Hant.all.json", size: 0, mode: os.FileMode(420), modTime: time.Unix(1506031186, 0)}
     a := &asset{bytes: bytes, info: info}
     return a, nil
 }
diff --git a/wski18n/resources/en_US.all.json b/wski18n/resources/en_US.all.json
index 8a8e83d..775cf4f 100644
--- a/wski18n/resources/en_US.all.json
+++ b/wski18n/resources/en_US.all.json
@@ -48,6 +48,14 @@
     "translation": "Authorization key is not configured (--auth is required)"
   },
   {
+    "id": "An API host must be provided.\n",
+    "translation": "An API host must be provided.\n"
+  },
+  {
+    "id": "Unable to add route options '{{.options}}'",
+    "translation": "Unable to add route options: {{.options}}"
+  },
+  {
     "id": "Command failed due to an HTTP failure",
     "translation": "Command failed due to an HTTP failure"
   },