Implement resourceiconresponse as interface{} (#45)


All "icon" fields are set to be of resourceiconresponse type, however that type is not defined anywhere, making the icon field resolving to a string.

This isn't correct as ACS returns the Icon as an object, which in term causes these types of error:

"json: cannot unmarshal object into Go struct field VirtualMachinesMetric.virtualmachine.icon of type string"

This change sets the type of resourceiconresponse type to be an empty interface{}, to guarantee some backward compatibility and ensure that the unmarshalling works as intended.

Tested againt ACS 4.17.1
diff --git a/cloudstack/AccountService.go b/cloudstack/AccountService.go
index 75e4edd..478500d 100644
--- a/cloudstack/AccountService.go
+++ b/cloudstack/AccountService.go
@@ -366,7 +366,7 @@
 	Domainid                  string                      `json:"domainid"`
 	Domainpath                string                      `json:"domainpath"`
 	Groups                    []string                    `json:"groups"`
-	Icon                      string                      `json:"icon"`
+	Icon                      interface{}                 `json:"icon"`
 	Id                        string                      `json:"id"`
 	Ipavailable               string                      `json:"ipavailable"`
 	Iplimit                   string                      `json:"iplimit"`
@@ -419,28 +419,28 @@
 }
 
 type CreateAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type DeleteAccountParams struct {
@@ -660,7 +660,7 @@
 	Domainid                  string                       `json:"domainid"`
 	Domainpath                string                       `json:"domainpath"`
 	Groups                    []string                     `json:"groups"`
-	Icon                      string                       `json:"icon"`
+	Icon                      interface{}                  `json:"icon"`
 	Id                        string                       `json:"id"`
 	Ipavailable               string                       `json:"ipavailable"`
 	Iplimit                   string                       `json:"iplimit"`
@@ -713,28 +713,28 @@
 }
 
 type DisableAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type EnableAccountParams struct {
@@ -838,7 +838,7 @@
 	Domainid                  string                      `json:"domainid"`
 	Domainpath                string                      `json:"domainpath"`
 	Groups                    []string                    `json:"groups"`
-	Icon                      string                      `json:"icon"`
+	Icon                      interface{}                 `json:"icon"`
 	Id                        string                      `json:"id"`
 	Ipavailable               string                      `json:"ipavailable"`
 	Iplimit                   string                      `json:"iplimit"`
@@ -891,28 +891,28 @@
 }
 
 type EnableAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type GetSolidFireAccountIdParams struct {
@@ -1371,7 +1371,7 @@
 	Domainid                  string            `json:"domainid"`
 	Domainpath                string            `json:"domainpath"`
 	Groups                    []string          `json:"groups"`
-	Icon                      string            `json:"icon"`
+	Icon                      interface{}       `json:"icon"`
 	Id                        string            `json:"id"`
 	Ipavailable               string            `json:"ipavailable"`
 	Iplimit                   string            `json:"iplimit"`
@@ -1424,28 +1424,28 @@
 }
 
 type AccountUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type ListProjectAccountsParams struct {
@@ -1680,7 +1680,7 @@
 	Displaytext               string              `json:"displaytext"`
 	Domain                    string              `json:"domain"`
 	Domainid                  string              `json:"domainid"`
-	Icon                      string              `json:"icon"`
+	Icon                      interface{}         `json:"icon"`
 	Id                        string              `json:"id"`
 	Ipavailable               string              `json:"ipavailable"`
 	Iplimit                   string              `json:"iplimit"`
@@ -1821,7 +1821,7 @@
 	Domainid                  string                    `json:"domainid"`
 	Domainpath                string                    `json:"domainpath"`
 	Groups                    []string                  `json:"groups"`
-	Icon                      string                    `json:"icon"`
+	Icon                      interface{}               `json:"icon"`
 	Id                        string                    `json:"id"`
 	Ipavailable               string                    `json:"ipavailable"`
 	Iplimit                   string                    `json:"iplimit"`
@@ -1874,28 +1874,28 @@
 }
 
 type LockAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type MarkDefaultZoneForAccountParams struct {
@@ -2022,7 +2022,7 @@
 	Domainid                  string                                  `json:"domainid"`
 	Domainpath                string                                  `json:"domainpath"`
 	Groups                    []string                                `json:"groups"`
-	Icon                      string                                  `json:"icon"`
+	Icon                      interface{}                             `json:"icon"`
 	Id                        string                                  `json:"id"`
 	Ipavailable               string                                  `json:"ipavailable"`
 	Iplimit                   string                                  `json:"iplimit"`
@@ -2075,28 +2075,28 @@
 }
 
 type MarkDefaultZoneForAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type UpdateAccountParams struct {
@@ -2275,7 +2275,7 @@
 	Domainid                  string                      `json:"domainid"`
 	Domainpath                string                      `json:"domainpath"`
 	Groups                    []string                    `json:"groups"`
-	Icon                      string                      `json:"icon"`
+	Icon                      interface{}                 `json:"icon"`
 	Id                        string                      `json:"id"`
 	Ipavailable               string                      `json:"ipavailable"`
 	Iplimit                   string                      `json:"iplimit"`
@@ -2328,26 +2328,26 @@
 }
 
 type UpdateAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
diff --git a/cloudstack/AffinityGroupService.go b/cloudstack/AffinityGroupService.go
index 3d6ae18..fcaa8cc 100644
--- a/cloudstack/AffinityGroupService.go
+++ b/cloudstack/AffinityGroupService.go
@@ -981,7 +981,7 @@
 	Hostid                string                                       `json:"hostid"`
 	Hostname              string                                       `json:"hostname"`
 	Hypervisor            string                                       `json:"hypervisor"`
-	Icon                  string                                       `json:"icon"`
+	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
diff --git a/cloudstack/BrocadeVCSService.go b/cloudstack/BrocadeVCSService.go
index 1587ecd..ac1930f 100644
--- a/cloudstack/BrocadeVCSService.go
+++ b/cloudstack/BrocadeVCSService.go
@@ -427,7 +427,7 @@
 	Externalid                  string                           `json:"externalid"`
 	Gateway                     string                           `json:"gateway"`
 	Hasannotations              bool                             `json:"hasannotations"`
-	Icon                        string                           `json:"icon"`
+	Icon                        interface{}                      `json:"icon"`
 	Id                          string                           `json:"id"`
 	Ip6cidr                     string                           `json:"ip6cidr"`
 	Ip6gateway                  string                           `json:"ip6gateway"`
diff --git a/cloudstack/DomainService.go b/cloudstack/DomainService.go
index 45d17b6..71c2ed4 100644
--- a/cloudstack/DomainService.go
+++ b/cloudstack/DomainService.go
@@ -166,7 +166,7 @@
 	Domaindetails             map[string]string `json:"domaindetails"`
 	Hasannotations            bool              `json:"hasannotations"`
 	Haschild                  bool              `json:"haschild"`
-	Icon                      string            `json:"icon"`
+	Icon                      interface{}       `json:"icon"`
 	Id                        string            `json:"id"`
 	Ipavailable               string            `json:"ipavailable"`
 	Iplimit                   string            `json:"iplimit"`
@@ -587,7 +587,7 @@
 	Domaindetails             map[string]string `json:"domaindetails"`
 	Hasannotations            bool              `json:"hasannotations"`
 	Haschild                  bool              `json:"haschild"`
-	Icon                      string            `json:"icon"`
+	Icon                      interface{}       `json:"icon"`
 	Id                        string            `json:"id"`
 	Ipavailable               string            `json:"ipavailable"`
 	Iplimit                   string            `json:"iplimit"`
@@ -932,7 +932,7 @@
 	Domaindetails             map[string]string `json:"domaindetails"`
 	Hasannotations            bool              `json:"hasannotations"`
 	Haschild                  bool              `json:"haschild"`
-	Icon                      string            `json:"icon"`
+	Icon                      interface{}       `json:"icon"`
 	Id                        string            `json:"id"`
 	Ipavailable               string            `json:"ipavailable"`
 	Iplimit                   string            `json:"iplimit"`
@@ -1080,7 +1080,7 @@
 	Domaindetails             map[string]string `json:"domaindetails"`
 	Hasannotations            bool              `json:"hasannotations"`
 	Haschild                  bool              `json:"haschild"`
-	Icon                      string            `json:"icon"`
+	Icon                      interface{}       `json:"icon"`
 	Id                        string            `json:"id"`
 	Ipavailable               string            `json:"ipavailable"`
 	Iplimit                   string            `json:"iplimit"`
diff --git a/cloudstack/ISOService.go b/cloudstack/ISOService.go
index 7ed08ff..9bdeba2 100644
--- a/cloudstack/ISOService.go
+++ b/cloudstack/ISOService.go
@@ -197,7 +197,7 @@
 	Hostid                string                           `json:"hostid"`
 	Hostname              string                           `json:"hostname"`
 	Hypervisor            string                           `json:"hypervisor"`
-	Icon                  string                           `json:"icon"`
+	Icon                  interface{}                      `json:"icon"`
 	Id                    string                           `json:"id"`
 	Instancename          string                           `json:"instancename"`
 	Isdynamicallyscalable bool                             `json:"isdynamicallyscalable"`
@@ -466,7 +466,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -742,7 +742,7 @@
 	Hostid                string                           `json:"hostid"`
 	Hostname              string                           `json:"hostname"`
 	Hypervisor            string                           `json:"hypervisor"`
-	Icon                  string                           `json:"icon"`
+	Icon                  interface{}                      `json:"icon"`
 	Id                    string                           `json:"id"`
 	Instancename          string                           `json:"instancename"`
 	Isdynamicallyscalable bool                             `json:"isdynamicallyscalable"`
@@ -1631,7 +1631,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -2067,7 +2067,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -2446,7 +2446,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
diff --git a/cloudstack/LDAPService.go b/cloudstack/LDAPService.go
index c437ba2..3b42179 100644
--- a/cloudstack/LDAPService.go
+++ b/cloudstack/LDAPService.go
@@ -945,7 +945,7 @@
 	Domainid                  string                          `json:"domainid"`
 	Domainpath                string                          `json:"domainpath"`
 	Groups                    []string                        `json:"groups"`
-	Icon                      string                          `json:"icon"`
+	Icon                      interface{}                     `json:"icon"`
 	Id                        string                          `json:"id"`
 	Ipavailable               string                          `json:"ipavailable"`
 	Iplimit                   string                          `json:"iplimit"`
@@ -998,28 +998,28 @@
 }
 
 type LdapCreateAccountResponseUser struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type LdapRemoveParams struct {
diff --git a/cloudstack/NetworkService.go b/cloudstack/NetworkService.go
index 914c2a1..7eac43b 100644
--- a/cloudstack/NetworkService.go
+++ b/cloudstack/NetworkService.go
@@ -988,7 +988,7 @@
 	Externalid                  string                         `json:"externalid"`
 	Gateway                     string                         `json:"gateway"`
 	Hasannotations              bool                           `json:"hasannotations"`
-	Icon                        string                         `json:"icon"`
+	Icon                        interface{}                    `json:"icon"`
 	Id                          string                         `json:"id"`
 	Ip6cidr                     string                         `json:"ip6cidr"`
 	Ip6gateway                  string                         `json:"ip6gateway"`
@@ -2406,7 +2406,7 @@
 	Externalid                  string                                `json:"externalid"`
 	Gateway                     string                                `json:"gateway"`
 	Hasannotations              bool                                  `json:"hasannotations"`
-	Icon                        string                                `json:"icon"`
+	Icon                        interface{}                           `json:"icon"`
 	Id                          string                                `json:"id"`
 	Ip6cidr                     string                                `json:"ip6cidr"`
 	Ip6gateway                  string                                `json:"ip6gateway"`
@@ -3380,7 +3380,7 @@
 	Externalid                  string                   `json:"externalid"`
 	Gateway                     string                   `json:"gateway"`
 	Hasannotations              bool                     `json:"hasannotations"`
-	Icon                        string                   `json:"icon"`
+	Icon                        interface{}              `json:"icon"`
 	Id                          string                   `json:"id"`
 	Ip6cidr                     string                   `json:"ip6cidr"`
 	Ip6gateway                  string                   `json:"ip6gateway"`
@@ -3617,7 +3617,7 @@
 	Externalid                  string                          `json:"externalid"`
 	Gateway                     string                          `json:"gateway"`
 	Hasannotations              bool                            `json:"hasannotations"`
-	Icon                        string                          `json:"icon"`
+	Icon                        interface{}                     `json:"icon"`
 	Id                          string                          `json:"id"`
 	Ip6cidr                     string                          `json:"ip6cidr"`
 	Ip6gateway                  string                          `json:"ip6gateway"`
@@ -3973,7 +3973,7 @@
 	Externalid                  string                           `json:"externalid"`
 	Gateway                     string                           `json:"gateway"`
 	Hasannotations              bool                             `json:"hasannotations"`
-	Icon                        string                           `json:"icon"`
+	Icon                        interface{}                      `json:"icon"`
 	Id                          string                           `json:"id"`
 	Ip6cidr                     string                           `json:"ip6cidr"`
 	Ip6gateway                  string                           `json:"ip6gateway"`
@@ -5139,7 +5139,7 @@
 	Externalid                  string                         `json:"externalid"`
 	Gateway                     string                         `json:"gateway"`
 	Hasannotations              bool                           `json:"hasannotations"`
-	Icon                        string                         `json:"icon"`
+	Icon                        interface{}                    `json:"icon"`
 	Id                          string                         `json:"id"`
 	Ip6cidr                     string                         `json:"ip6cidr"`
 	Ip6gateway                  string                         `json:"ip6gateway"`
diff --git a/cloudstack/NicService.go b/cloudstack/NicService.go
index 08463e5..471edae 100644
--- a/cloudstack/NicService.go
+++ b/cloudstack/NicService.go
@@ -545,7 +545,7 @@
 	Hostid                string                               `json:"hostid"`
 	Hostname              string                               `json:"hostname"`
 	Hypervisor            string                               `json:"hypervisor"`
-	Icon                  string                               `json:"icon"`
+	Icon                  interface{}                          `json:"icon"`
 	Id                    string                               `json:"id"`
 	Instancename          string                               `json:"instancename"`
 	Isdynamicallyscalable bool                                 `json:"isdynamicallyscalable"`
diff --git a/cloudstack/ProjectService.go b/cloudstack/ProjectService.go
index 3c06582..323c027 100644
--- a/cloudstack/ProjectService.go
+++ b/cloudstack/ProjectService.go
@@ -150,7 +150,7 @@
 	Displaytext               string              `json:"displaytext"`
 	Domain                    string              `json:"domain"`
 	Domainid                  string              `json:"domainid"`
-	Icon                      string              `json:"icon"`
+	Icon                      interface{}         `json:"icon"`
 	Id                        string              `json:"id"`
 	Ipavailable               string              `json:"ipavailable"`
 	Iplimit                   string              `json:"iplimit"`
@@ -663,7 +663,7 @@
 	Displaytext               string              `json:"displaytext"`
 	Domain                    string              `json:"domain"`
 	Domainid                  string              `json:"domainid"`
-	Icon                      string              `json:"icon"`
+	Icon                      interface{}         `json:"icon"`
 	Id                        string              `json:"id"`
 	Ipavailable               string              `json:"ipavailable"`
 	Iplimit                   string              `json:"iplimit"`
@@ -1786,7 +1786,7 @@
 	Displaytext               string              `json:"displaytext"`
 	Domain                    string              `json:"domain"`
 	Domainid                  string              `json:"domainid"`
-	Icon                      string              `json:"icon"`
+	Icon                      interface{}         `json:"icon"`
 	Id                        string              `json:"id"`
 	Ipavailable               string              `json:"ipavailable"`
 	Iplimit                   string              `json:"iplimit"`
@@ -1911,7 +1911,7 @@
 	Displaytext               string              `json:"displaytext"`
 	Domain                    string              `json:"domain"`
 	Domainid                  string              `json:"domainid"`
-	Icon                      string              `json:"icon"`
+	Icon                      interface{}         `json:"icon"`
 	Id                        string              `json:"id"`
 	Ipavailable               string              `json:"ipavailable"`
 	Iplimit                   string              `json:"iplimit"`
@@ -2127,7 +2127,7 @@
 	Displaytext               string              `json:"displaytext"`
 	Domain                    string              `json:"domain"`
 	Domainid                  string              `json:"domainid"`
-	Icon                      string              `json:"icon"`
+	Icon                      interface{}         `json:"icon"`
 	Id                        string              `json:"id"`
 	Ipavailable               string              `json:"ipavailable"`
 	Iplimit                   string              `json:"iplimit"`
diff --git a/cloudstack/SSHService.go b/cloudstack/SSHService.go
index aef62e1..da7f6e9 100644
--- a/cloudstack/SSHService.go
+++ b/cloudstack/SSHService.go
@@ -968,7 +968,7 @@
 	Hostid                string                                              `json:"hostid"`
 	Hostname              string                                              `json:"hostname"`
 	Hypervisor            string                                              `json:"hypervisor"`
-	Icon                  string                                              `json:"icon"`
+	Icon                  interface{}                                         `json:"icon"`
 	Id                    string                                              `json:"id"`
 	Instancename          string                                              `json:"instancename"`
 	Isdynamicallyscalable bool                                                `json:"isdynamicallyscalable"`
diff --git a/cloudstack/SnapshotService.go b/cloudstack/SnapshotService.go
index f469d12..c0b5a86 100644
--- a/cloudstack/SnapshotService.go
+++ b/cloudstack/SnapshotService.go
@@ -2228,7 +2228,7 @@
 	Hostid                string                                    `json:"hostid"`
 	Hostname              string                                    `json:"hostname"`
 	Hypervisor            string                                    `json:"hypervisor"`
-	Icon                  string                                    `json:"icon"`
+	Icon                  interface{}                               `json:"icon"`
 	Id                    string                                    `json:"id"`
 	Instancename          string                                    `json:"instancename"`
 	Isdynamicallyscalable bool                                      `json:"isdynamicallyscalable"`
diff --git a/cloudstack/TemplateService.go b/cloudstack/TemplateService.go
index 6423881..3d12317 100644
--- a/cloudstack/TemplateService.go
+++ b/cloudstack/TemplateService.go
@@ -209,7 +209,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -663,7 +663,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -2068,7 +2068,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -2239,7 +2239,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -2829,7 +2829,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
@@ -3226,7 +3226,7 @@
 	Hostid                string              `json:"hostid"`
 	Hostname              string              `json:"hostname"`
 	Hypervisor            string              `json:"hypervisor"`
-	Icon                  string              `json:"icon"`
+	Icon                  interface{}         `json:"icon"`
 	Id                    string              `json:"id"`
 	Isdynamicallyscalable bool                `json:"isdynamicallyscalable"`
 	Isextractable         bool                `json:"isextractable"`
diff --git a/cloudstack/UserService.go b/cloudstack/UserService.go
index 3c024cf..b1f298e 100644
--- a/cloudstack/UserService.go
+++ b/cloudstack/UserService.go
@@ -261,30 +261,30 @@
 }
 
 type CreateUserResponse struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type DeleteUserParams struct {
@@ -450,30 +450,30 @@
 }
 
 type DisableUserResponse struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type EnableUserParams struct {
@@ -535,30 +535,30 @@
 }
 
 type EnableUserResponse struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type GetUserParams struct {
@@ -616,30 +616,30 @@
 }
 
 type GetUserResponse struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type GetUserKeysParams struct {
@@ -1068,30 +1068,30 @@
 }
 
 type User struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type LockUserParams struct {
@@ -1153,30 +1153,30 @@
 }
 
 type LockUserResponse struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
 
 type RegisterUserKeysParams struct {
@@ -1461,28 +1461,28 @@
 }
 
 type UpdateUserResponse struct {
-	Account             string `json:"account"`
-	Accountid           string `json:"accountid"`
-	Accounttype         int    `json:"accounttype"`
-	Apikey              string `json:"apikey"`
-	Created             string `json:"created"`
-	Domain              string `json:"domain"`
-	Domainid            string `json:"domainid"`
-	Email               string `json:"email"`
-	Firstname           string `json:"firstname"`
-	Icon                string `json:"icon"`
-	Id                  string `json:"id"`
-	Iscallerchilddomain bool   `json:"iscallerchilddomain"`
-	Isdefault           bool   `json:"isdefault"`
-	JobID               string `json:"jobid"`
-	Jobstatus           int    `json:"jobstatus"`
-	Lastname            string `json:"lastname"`
-	Roleid              string `json:"roleid"`
-	Rolename            string `json:"rolename"`
-	Roletype            string `json:"roletype"`
-	Secretkey           string `json:"secretkey"`
-	State               string `json:"state"`
-	Timezone            string `json:"timezone"`
-	Username            string `json:"username"`
-	Usersource          string `json:"usersource"`
+	Account             string      `json:"account"`
+	Accountid           string      `json:"accountid"`
+	Accounttype         int         `json:"accounttype"`
+	Apikey              string      `json:"apikey"`
+	Created             string      `json:"created"`
+	Domain              string      `json:"domain"`
+	Domainid            string      `json:"domainid"`
+	Email               string      `json:"email"`
+	Firstname           string      `json:"firstname"`
+	Icon                interface{} `json:"icon"`
+	Id                  string      `json:"id"`
+	Iscallerchilddomain bool        `json:"iscallerchilddomain"`
+	Isdefault           bool        `json:"isdefault"`
+	JobID               string      `json:"jobid"`
+	Jobstatus           int         `json:"jobstatus"`
+	Lastname            string      `json:"lastname"`
+	Roleid              string      `json:"roleid"`
+	Rolename            string      `json:"rolename"`
+	Roletype            string      `json:"roletype"`
+	Secretkey           string      `json:"secretkey"`
+	State               string      `json:"state"`
+	Timezone            string      `json:"timezone"`
+	Username            string      `json:"username"`
+	Usersource          string      `json:"usersource"`
 }
diff --git a/cloudstack/VPCService.go b/cloudstack/VPCService.go
index f7c9f80..ec59228 100644
--- a/cloudstack/VPCService.go
+++ b/cloudstack/VPCService.go
@@ -713,7 +713,7 @@
 	Domainid             string                     `json:"domainid"`
 	Fordisplay           bool                       `json:"fordisplay"`
 	Hasannotations       bool                       `json:"hasannotations"`
-	Icon                 string                     `json:"icon"`
+	Icon                 interface{}                `json:"icon"`
 	Id                   string                     `json:"id"`
 	JobID                string                     `json:"jobid"`
 	Jobstatus            int                        `json:"jobstatus"`
@@ -2850,7 +2850,7 @@
 	Domainid             string               `json:"domainid"`
 	Fordisplay           bool                 `json:"fordisplay"`
 	Hasannotations       bool                 `json:"hasannotations"`
-	Icon                 string               `json:"icon"`
+	Icon                 interface{}          `json:"icon"`
 	Id                   string               `json:"id"`
 	JobID                string               `json:"jobid"`
 	Jobstatus            int                  `json:"jobstatus"`
@@ -3164,7 +3164,7 @@
 	Domainid             string                     `json:"domainid"`
 	Fordisplay           bool                       `json:"fordisplay"`
 	Hasannotations       bool                       `json:"hasannotations"`
-	Icon                 string                     `json:"icon"`
+	Icon                 interface{}                `json:"icon"`
 	Id                   string                     `json:"id"`
 	JobID                string                     `json:"jobid"`
 	Jobstatus            int                        `json:"jobstatus"`
diff --git a/cloudstack/VirtualMachineService.go b/cloudstack/VirtualMachineService.go
index 912f2a1..2bac76c 100644
--- a/cloudstack/VirtualMachineService.go
+++ b/cloudstack/VirtualMachineService.go
@@ -262,7 +262,7 @@
 	Hostid                string                                        `json:"hostid"`
 	Hostname              string                                        `json:"hostname"`
 	Hypervisor            string                                        `json:"hypervisor"`
-	Icon                  string                                        `json:"icon"`
+	Icon                  interface{}                                   `json:"icon"`
 	Id                    string                                        `json:"id"`
 	Instancename          string                                        `json:"instancename"`
 	Isdynamicallyscalable bool                                          `json:"isdynamicallyscalable"`
@@ -557,7 +557,7 @@
 	Hostid                string                                      `json:"hostid"`
 	Hostname              string                                      `json:"hostname"`
 	Hypervisor            string                                      `json:"hypervisor"`
-	Icon                  string                                      `json:"icon"`
+	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
@@ -800,7 +800,7 @@
 	Hostid                string                                                `json:"hostid"`
 	Hostname              string                                                `json:"hostname"`
 	Hypervisor            string                                                `json:"hypervisor"`
-	Icon                  string                                                `json:"icon"`
+	Icon                  interface{}                                           `json:"icon"`
 	Id                    string                                                `json:"id"`
 	Instancename          string                                                `json:"instancename"`
 	Isdynamicallyscalable bool                                                  `json:"isdynamicallyscalable"`
@@ -1918,7 +1918,7 @@
 	Hostid                string                                      `json:"hostid"`
 	Hostname              string                                      `json:"hostname"`
 	Hypervisor            string                                      `json:"hypervisor"`
-	Icon                  string                                      `json:"icon"`
+	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
@@ -2179,7 +2179,7 @@
 	Hostid                string                                       `json:"hostid"`
 	Hostname              string                                       `json:"hostname"`
 	Hypervisor            string                                       `json:"hypervisor"`
-	Icon                  string                                       `json:"icon"`
+	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
@@ -3222,7 +3222,7 @@
 	Hostid                string                        `json:"hostid"`
 	Hostname              string                        `json:"hostname"`
 	Hypervisor            string                        `json:"hypervisor"`
-	Icon                  string                        `json:"icon"`
+	Icon                  interface{}                   `json:"icon"`
 	Id                    string                        `json:"id"`
 	Instancename          string                        `json:"instancename"`
 	Isdynamicallyscalable bool                          `json:"isdynamicallyscalable"`
@@ -4106,7 +4106,7 @@
 	Hostid                string                               `json:"hostid"`
 	Hostname              string                               `json:"hostname"`
 	Hypervisor            string                               `json:"hypervisor"`
-	Icon                  string                               `json:"icon"`
+	Icon                  interface{}                          `json:"icon"`
 	Id                    string                               `json:"id"`
 	Instancename          string                               `json:"instancename"`
 	Ipaddress             string                               `json:"ipaddress"`
@@ -4388,7 +4388,7 @@
 	Hostid                string                                       `json:"hostid"`
 	Hostname              string                                       `json:"hostname"`
 	Hypervisor            string                                       `json:"hypervisor"`
-	Icon                  string                                       `json:"icon"`
+	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
@@ -4666,7 +4666,7 @@
 	Hostid                string                                                 `json:"hostid"`
 	Hostname              string                                                 `json:"hostname"`
 	Hypervisor            string                                                 `json:"hypervisor"`
-	Icon                  string                                                 `json:"icon"`
+	Icon                  interface{}                                            `json:"icon"`
 	Id                    string                                                 `json:"id"`
 	Instancename          string                                                 `json:"instancename"`
 	Isdynamicallyscalable bool                                                   `json:"isdynamicallyscalable"`
@@ -4927,7 +4927,7 @@
 	Hostid                string                                      `json:"hostid"`
 	Hostname              string                                      `json:"hostname"`
 	Hypervisor            string                                      `json:"hypervisor"`
-	Icon                  string                                      `json:"icon"`
+	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
@@ -5130,7 +5130,7 @@
 	Hostid                string                                       `json:"hostid"`
 	Hostname              string                                       `json:"hostname"`
 	Hypervisor            string                                       `json:"hypervisor"`
-	Icon                  string                                       `json:"icon"`
+	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
@@ -5372,7 +5372,7 @@
 	Hostid                string                                             `json:"hostid"`
 	Hostname              string                                             `json:"hostname"`
 	Hypervisor            string                                             `json:"hypervisor"`
-	Icon                  string                                             `json:"icon"`
+	Icon                  interface{}                                        `json:"icon"`
 	Id                    string                                             `json:"id"`
 	Instancename          string                                             `json:"instancename"`
 	Isdynamicallyscalable bool                                               `json:"isdynamicallyscalable"`
@@ -5595,7 +5595,7 @@
 	Hostid                string                                                `json:"hostid"`
 	Hostname              string                                                `json:"hostname"`
 	Hypervisor            string                                                `json:"hypervisor"`
-	Icon                  string                                                `json:"icon"`
+	Icon                  interface{}                                           `json:"icon"`
 	Id                    string                                                `json:"id"`
 	Instancename          string                                                `json:"instancename"`
 	Isdynamicallyscalable bool                                                  `json:"isdynamicallyscalable"`
@@ -5836,7 +5836,7 @@
 	Hostid                string                                       `json:"hostid"`
 	Hostname              string                                       `json:"hostname"`
 	Hypervisor            string                                       `json:"hypervisor"`
-	Icon                  string                                       `json:"icon"`
+	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
@@ -6266,7 +6266,7 @@
 	Hostid                string                                     `json:"hostid"`
 	Hostname              string                                     `json:"hostname"`
 	Hypervisor            string                                     `json:"hypervisor"`
-	Icon                  string                                     `json:"icon"`
+	Icon                  interface{}                                `json:"icon"`
 	Id                    string                                     `json:"id"`
 	Instancename          string                                     `json:"instancename"`
 	Isdynamicallyscalable bool                                       `json:"isdynamicallyscalable"`
@@ -6508,7 +6508,7 @@
 	Hostid                string                                    `json:"hostid"`
 	Hostname              string                                    `json:"hostname"`
 	Hypervisor            string                                    `json:"hypervisor"`
-	Icon                  string                                    `json:"icon"`
+	Icon                  interface{}                               `json:"icon"`
 	Id                    string                                    `json:"id"`
 	Instancename          string                                    `json:"instancename"`
 	Isdynamicallyscalable bool                                      `json:"isdynamicallyscalable"`
@@ -6750,7 +6750,7 @@
 	Hostid                string                                                   `json:"hostid"`
 	Hostname              string                                                   `json:"hostname"`
 	Hypervisor            string                                                   `json:"hypervisor"`
-	Icon                  string                                                   `json:"icon"`
+	Icon                  interface{}                                              `json:"icon"`
 	Id                    string                                                   `json:"id"`
 	Instancename          string                                                   `json:"instancename"`
 	Isdynamicallyscalable bool                                                     `json:"isdynamicallyscalable"`
@@ -7269,7 +7269,7 @@
 	Hostid                string                                      `json:"hostid"`
 	Hostname              string                                      `json:"hostname"`
 	Hypervisor            string                                      `json:"hypervisor"`
-	Icon                  string                                      `json:"icon"`
+	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
diff --git a/cloudstack/ZoneService.go b/cloudstack/ZoneService.go
index 61367a8..cc067a7 100644
--- a/cloudstack/ZoneService.go
+++ b/cloudstack/ZoneService.go
@@ -366,7 +366,7 @@
 	Domainname            string                       `json:"domainname"`
 	Guestcidraddress      string                       `json:"guestcidraddress"`
 	Hasannotations        bool                         `json:"hasannotations"`
-	Icon                  string                       `json:"icon"`
+	Icon                  interface{}                  `json:"icon"`
 	Id                    string                       `json:"id"`
 	Internaldns1          string                       `json:"internaldns1"`
 	Internaldns2          string                       `json:"internaldns2"`
@@ -1462,7 +1462,7 @@
 	Domainname            string            `json:"domainname"`
 	Guestcidraddress      string            `json:"guestcidraddress"`
 	Hasannotations        bool              `json:"hasannotations"`
-	Icon                  string            `json:"icon"`
+	Icon                  interface{}       `json:"icon"`
 	Id                    string            `json:"id"`
 	Internaldns1          string            `json:"internaldns1"`
 	Internaldns2          string            `json:"internaldns2"`
@@ -1846,7 +1846,7 @@
 	Domainname                      string                `json:"domainname"`
 	Guestcidraddress                string                `json:"guestcidraddress"`
 	Hasannotations                  bool                  `json:"hasannotations"`
-	Icon                            string                `json:"icon"`
+	Icon                            interface{}           `json:"icon"`
 	Id                              string                `json:"id"`
 	Internaldns1                    string                `json:"internaldns1"`
 	Internaldns2                    string                `json:"internaldns2"`
@@ -2326,7 +2326,7 @@
 	Domainname            string                       `json:"domainname"`
 	Guestcidraddress      string                       `json:"guestcidraddress"`
 	Hasannotations        bool                         `json:"hasannotations"`
-	Icon                  string                       `json:"icon"`
+	Icon                  interface{}                  `json:"icon"`
 	Id                    string                       `json:"id"`
 	Internaldns1          string                       `json:"internaldns1"`
 	Internaldns2          string                       `json:"internaldns2"`
diff --git a/generate/generate.go b/generate/generate.go
index 00cc066..7262e05 100644
--- a/generate/generate.go
+++ b/generate/generate.go
@@ -2116,6 +2116,8 @@
 		return "map[string]string"
 	case "set":
 		return "[]interface{}"
+	case "resourceiconresponse":
+		return "interface{}"
 	case "responseobject":
 		return "json.RawMessage"
 	case "uservmresponse":