You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2024/12/03 14:23:38 UTC

(cloudstack-go) branch sdk-4.20 created (now d4d7f16)

This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a change to branch sdk-4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git


      at d4d7f16  Update SDK with 4.20 APIs

This branch includes the following new commits:

     new d4d7f16  Update SDK with 4.20 APIs

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(cloudstack-go) 01/01: Update SDK with 4.20 APIs

Posted by pe...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch sdk-4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack-go.git

commit d4d7f16d1d7daaff917b672cc0a40ed3c24d7e92
Author: Pearl Dsilva <pe...@gmail.com>
AuthorDate: Tue Dec 3 09:22:03 2024 -0500

    Update SDK with 4.20 APIs
---
 cloudstack/AccountService.go          |     33 +
 cloudstack/AddressService.go          |     31 +
 cloudstack/AffinityGroupService.go    |     80 +-
 cloudstack/AutoScaleService.go        |     13 +
 cloudstack/BrocadeVCSService.go       |      5 +
 cloudstack/ClusterService.go          |     57 +
 cloudstack/ConfigurationService.go    |      3 +
 cloudstack/DiskOfferingService.go     |     78 +
 cloudstack/DomainService.go           |     28 +
 cloudstack/EventService.go            |      1 +
 cloudstack/FirewallService.go         |      2 +-
 cloudstack/HostService.go             |     45 +-
 cloudstack/HypervisorService.go       |     48 +
 cloudstack/ISOService.go              |    136 +-
 cloudstack/InternalLBService.go       |      3 +
 cloudstack/KubernetesService.go       |     29 +
 cloudstack/LDAPService.go             |      1 +
 cloudstack/LimitService.go            |     80 +-
 cloudstack/LoadBalancerService.go     |     12 +
 cloudstack/NetworkOfferingService.go  |    187 +
 cloudstack/NetworkService.go          |    108 +
 cloudstack/NicService.go              |     28 +-
 cloudstack/OvsElementService.go       |     42 +-
 cloudstack/PodService.go              |      3 +
 cloudstack/PoolService.go             |     40 +
 cloudstack/ProjectService.go          |     28 +-
 cloudstack/ResourcemetadataService.go |      1 +
 cloudstack/ResourcetagsService.go     |      1 +
 cloudstack/RoleService.go             |     28 +
 cloudstack/RouterService.go           |     69 +-
 cloudstack/SSHService.go              |     28 +-
 cloudstack/SecurityGroupService.go    |      2 +
 cloudstack/ServiceOfferingService.go  |    128 +
 cloudstack/SnapshotService.go         |     36 +-
 cloudstack/StoragePoolService.go      |      6 +
 cloudstack/SystemCapacityService.go   |     25 +
 cloudstack/TemplateService.go         |    157 +
 cloudstack/UsageService.go            |     10 +-
 cloudstack/UsageService_mock.go       |      8 +-
 cloudstack/VLANService.go             |     36 +-
 cloudstack/VMGroupService.go          |      3 +
 cloudstack/VPCService.go              |    294 +-
 cloudstack/VPCService_mock.go         |     16 +-
 cloudstack/VPNService.go              |     55 +-
 cloudstack/VirtualMachineService.go   |    629 +-
 cloudstack/VolumeService.go           |   1819 +-
 cloudstack/ZoneService.go             |     16 +
 generate/listApis.json                | 193717 +++++++++++++++++--------------
 test/UsageService_test.go             |      2 +-
 test/VPCService_test.go               |      4 +-
 50 files changed, 107883 insertions(+), 90328 deletions(-)

diff --git a/cloudstack/AccountService.go b/cloudstack/AccountService.go
index 66d61a5..0a71a4e 100644
--- a/cloudstack/AccountService.go
+++ b/cloudstack/AccountService.go
@@ -485,6 +485,7 @@ type CreateAccountResponse struct {
 	Snapshotlimit             string                      `json:"snapshotlimit"`
 	Snapshottotal             int64                       `json:"snapshottotal"`
 	State                     string                      `json:"state"`
+	Taggedresources           []string                    `json:"taggedresources"`
 	Templateavailable         string                      `json:"templateavailable"`
 	Templatelimit             string                      `json:"templatelimit"`
 	Templatetotal             int64                       `json:"templatetotal"`
@@ -811,6 +812,7 @@ type DisableAccountResponse struct {
 	Snapshotlimit             string                       `json:"snapshotlimit"`
 	Snapshottotal             int64                        `json:"snapshottotal"`
 	State                     string                       `json:"state"`
+	Taggedresources           []string                     `json:"taggedresources"`
 	Templateavailable         string                       `json:"templateavailable"`
 	Templatelimit             string                       `json:"templatelimit"`
 	Templatetotal             int64                        `json:"templatetotal"`
@@ -1009,6 +1011,7 @@ type EnableAccountResponse struct {
 	Snapshotlimit             string                      `json:"snapshotlimit"`
 	Snapshottotal             int64                       `json:"snapshottotal"`
 	State                     string                      `json:"state"`
+	Taggedresources           []string                    `json:"taggedresources"`
 	Templateavailable         string                      `json:"templateavailable"`
 	Templatelimit             string                      `json:"templatelimit"`
 	Templatetotal             int64                       `json:"templatetotal"`
@@ -1200,6 +1203,9 @@ func (p *ListAccountsParams) toURLValues() url.Values {
 	if v, found := p.p["state"]; found {
 		u.Set("state", v.(string))
 	}
+	if v, found := p.p["tag"]; found {
+		u.Set("tag", v.(string))
+	}
 	return u
 }
 
@@ -1476,6 +1482,27 @@ func (p *ListAccountsParams) GetState() (string, bool) {
 	return value, ok
 }
 
+func (p *ListAccountsParams) SetTag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tag"] = v
+}
+
+func (p *ListAccountsParams) ResetTag() {
+	if p.p != nil && p.p["tag"] != nil {
+		delete(p.p, "tag")
+	}
+}
+
+func (p *ListAccountsParams) GetTag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["tag"].(string)
+	return value, ok
+}
+
 // You should always use this function to get a new ListAccountsParams instance,
 // as then you are sure you have configured all required params
 func (s *AccountService) NewListAccountsParams() *ListAccountsParams {
@@ -1634,6 +1661,7 @@ type Account struct {
 	Snapshotlimit             string            `json:"snapshotlimit"`
 	Snapshottotal             int64             `json:"snapshottotal"`
 	State                     string            `json:"state"`
+	Taggedresources           []string          `json:"taggedresources"`
 	Templateavailable         string            `json:"templateavailable"`
 	Templatelimit             string            `json:"templatelimit"`
 	Templatetotal             int64             `json:"templatetotal"`
@@ -1984,6 +2012,7 @@ type ProjectAccount struct {
 	Snapshotlimit             string              `json:"snapshotlimit"`
 	Snapshottotal             int64               `json:"snapshottotal"`
 	State                     string              `json:"state"`
+	Taggedresources           []string            `json:"taggedresources"`
 	Tags                      []Tags              `json:"tags"`
 	Templateavailable         string              `json:"templateavailable"`
 	Templatelimit             string              `json:"templatelimit"`
@@ -2006,6 +2035,7 @@ type Tags struct {
 	Customer     string `json:"customer"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	Key          string `json:"key"`
 	Project      string `json:"project"`
 	Projectid    string `json:"projectid"`
@@ -2146,6 +2176,7 @@ type LockAccountResponse struct {
 	Snapshotlimit             string                    `json:"snapshotlimit"`
 	Snapshottotal             int64                     `json:"snapshottotal"`
 	State                     string                    `json:"state"`
+	Taggedresources           []string                  `json:"taggedresources"`
 	Templateavailable         string                    `json:"templateavailable"`
 	Templatelimit             string                    `json:"templatelimit"`
 	Templatetotal             int64                     `json:"templatetotal"`
@@ -2367,6 +2398,7 @@ type MarkDefaultZoneForAccountResponse struct {
 	Snapshotlimit             string                                  `json:"snapshotlimit"`
 	Snapshottotal             int64                                   `json:"snapshottotal"`
 	State                     string                                  `json:"state"`
+	Taggedresources           []string                                `json:"taggedresources"`
 	Templateavailable         string                                  `json:"templateavailable"`
 	Templatelimit             string                                  `json:"templatelimit"`
 	Templatetotal             int64                                   `json:"templatetotal"`
@@ -2664,6 +2696,7 @@ type UpdateAccountResponse struct {
 	Snapshotlimit             string                      `json:"snapshotlimit"`
 	Snapshottotal             int64                       `json:"snapshottotal"`
 	State                     string                      `json:"state"`
+	Taggedresources           []string                    `json:"taggedresources"`
 	Templateavailable         string                      `json:"templateavailable"`
 	Templatelimit             string                      `json:"templatelimit"`
 	Templatetotal             int64                       `json:"templatetotal"`
diff --git a/cloudstack/AddressService.go b/cloudstack/AddressService.go
index 43360d1..10e1f0c 100644
--- a/cloudstack/AddressService.go
+++ b/cloudstack/AddressService.go
@@ -346,7 +346,9 @@ type AssociateIpAddressResponse struct {
 	Associatednetworkname     string `json:"associatednetworkname"`
 	Domain                    string `json:"domain"`
 	Domainid                  string `json:"domainid"`
+	Domainpath                string `json:"domainpath"`
 	Fordisplay                bool   `json:"fordisplay"`
+	Forsystemvms              bool   `json:"forsystemvms"`
 	Forvirtualnetwork         bool   `json:"forvirtualnetwork"`
 	Hasannotations            bool   `json:"hasannotations"`
 	Hasrules                  bool   `json:"hasrules"`
@@ -515,6 +517,10 @@ func (p *ListPublicIpAddressesParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("forloadbalancing", vv)
 	}
+	if v, found := p.p["forsystemvms"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("forsystemvms", vv)
+	}
 	if v, found := p.p["forvirtualnetwork"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("forvirtualnetwork", vv)
@@ -713,6 +719,27 @@ func (p *ListPublicIpAddressesParams) GetForloadbalancing() (bool, bool) {
 	return value, ok
 }
 
+func (p *ListPublicIpAddressesParams) SetForsystemvms(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["forsystemvms"] = v
+}
+
+func (p *ListPublicIpAddressesParams) ResetForsystemvms() {
+	if p.p != nil && p.p["forsystemvms"] != nil {
+		delete(p.p, "forsystemvms")
+	}
+}
+
+func (p *ListPublicIpAddressesParams) GetForsystemvms() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["forsystemvms"].(bool)
+	return value, ok
+}
+
 func (p *ListPublicIpAddressesParams) SetForvirtualnetwork(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1180,7 +1207,9 @@ type PublicIpAddress struct {
 	Associatednetworkname     string `json:"associatednetworkname"`
 	Domain                    string `json:"domain"`
 	Domainid                  string `json:"domainid"`
+	Domainpath                string `json:"domainpath"`
 	Fordisplay                bool   `json:"fordisplay"`
+	Forsystemvms              bool   `json:"forsystemvms"`
 	Forvirtualnetwork         bool   `json:"forvirtualnetwork"`
 	Hasannotations            bool   `json:"hasannotations"`
 	Hasrules                  bool   `json:"hasrules"`
@@ -1349,7 +1378,9 @@ type UpdateIpAddressResponse struct {
 	Associatednetworkname     string `json:"associatednetworkname"`
 	Domain                    string `json:"domain"`
 	Domainid                  string `json:"domainid"`
+	Domainpath                string `json:"domainpath"`
 	Fordisplay                bool   `json:"fordisplay"`
+	Forsystemvms              bool   `json:"forsystemvms"`
 	Forvirtualnetwork         bool   `json:"forvirtualnetwork"`
 	Hasannotations            bool   `json:"hasannotations"`
 	Hasrules                  bool   `json:"hasrules"`
diff --git a/cloudstack/AffinityGroupService.go b/cloudstack/AffinityGroupService.go
index c0f157d..f87901c 100644
--- a/cloudstack/AffinityGroupService.go
+++ b/cloudstack/AffinityGroupService.go
@@ -245,18 +245,20 @@ func (s *AffinityGroupService) CreateAffinityGroup(p *CreateAffinityGroupParams)
 }
 
 type CreateAffinityGroupResponse struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	JobID             string   `json:"jobid"`
-	Jobstatus         int      `json:"jobstatus"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	JobID              string   `json:"jobid"`
+	Jobstatus          int      `json:"jobstatus"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 type DeleteAffinityGroupParams struct {
@@ -980,18 +982,20 @@ type ListAffinityGroupsResponse struct {
 }
 
 type AffinityGroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	JobID             string   `json:"jobid"`
-	Jobstatus         int      `json:"jobstatus"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	JobID              string   `json:"jobid"`
+	Jobstatus          int      `json:"jobstatus"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 type UpdateVMAffinityGroupParams struct {
@@ -1137,6 +1141,7 @@ type UpdateVMAffinityGroupResponse struct {
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
 	Created               string                                       `json:"created"`
+	Deleteprotection      bool                                         `json:"deleteprotection"`
 	Details               map[string]string                            `json:"details"`
 	Diskioread            int64                                        `json:"diskioread"`
 	Diskiowrite           int64                                        `json:"diskiowrite"`
@@ -1148,6 +1153,7 @@ type UpdateVMAffinityGroupResponse struct {
 	Displayvm             bool                                         `json:"displayvm"`
 	Domain                string                                       `json:"domain"`
 	Domainid              string                                       `json:"domainid"`
+	Domainpath            string                                       `json:"domainpath"`
 	Forvirtualnetwork     bool                                         `json:"forvirtualnetwork"`
 	Group                 string                                       `json:"group"`
 	Groupid               string                                       `json:"groupid"`
@@ -1161,6 +1167,7 @@ type UpdateVMAffinityGroupResponse struct {
 	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
+	Ipaddress             string                                       `json:"ipaddress"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                       `json:"isodisplaytext"`
 	Isoid                 string                                       `json:"isoid"`
@@ -1198,6 +1205,7 @@ type UpdateVMAffinityGroupResponse struct {
 	State                 string                                       `json:"state"`
 	Tags                  []Tags                                       `json:"tags"`
 	Templatedisplaytext   string                                       `json:"templatedisplaytext"`
+	Templateformat        string                                       `json:"templateformat"`
 	Templateid            string                                       `json:"templateid"`
 	Templatename          string                                       `json:"templatename"`
 	Templatetype          string                                       `json:"templatetype"`
@@ -1209,6 +1217,7 @@ type UpdateVMAffinityGroupResponse struct {
 	Userid                string                                       `json:"userid"`
 	Username              string                                       `json:"username"`
 	Vgpu                  string                                       `json:"vgpu"`
+	Vmtype                string                                       `json:"vmtype"`
 	Vnfdetails            map[string]string                            `json:"vnfdetails"`
 	Vnfnics               []string                                     `json:"vnfnics"`
 	Zoneid                string                                       `json:"zoneid"`
@@ -1220,6 +1229,7 @@ type UpdateVMAffinityGroupResponseSecuritygroup struct {
 	Description         string                                           `json:"description"`
 	Domain              string                                           `json:"domain"`
 	Domainid            string                                           `json:"domainid"`
+	Domainpath          string                                           `json:"domainpath"`
 	Egressrule          []UpdateVMAffinityGroupResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                           `json:"id"`
 	Ingressrule         []UpdateVMAffinityGroupResponseSecuritygroupRule `json:"ingressrule"`
@@ -1245,16 +1255,18 @@ type UpdateVMAffinityGroupResponseSecuritygroupRule struct {
 }
 
 type UpdateVMAffinityGroupResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *UpdateVMAffinityGroupResponse) UnmarshalJSON(b []byte) error {
diff --git a/cloudstack/AutoScaleService.go b/cloudstack/AutoScaleService.go
index 9e482d5..6432747 100644
--- a/cloudstack/AutoScaleService.go
+++ b/cloudstack/AutoScaleService.go
@@ -268,6 +268,7 @@ type CreateAutoScalePolicyResponse struct {
 	Conditions []string `json:"conditions"`
 	Domain     string   `json:"domain"`
 	Domainid   string   `json:"domainid"`
+	Domainpath string   `json:"domainpath"`
 	Duration   int      `json:"duration"`
 	Id         string   `json:"id"`
 	JobID      string   `json:"jobid"`
@@ -569,6 +570,7 @@ type CreateAutoScaleVmGroupResponse struct {
 	Created                      string   `json:"created"`
 	Domain                       string   `json:"domain"`
 	Domainid                     string   `json:"domainid"`
+	Domainpath                   string   `json:"domainpath"`
 	Fordisplay                   bool     `json:"fordisplay"`
 	Hasannotations               bool     `json:"hasannotations"`
 	Id                           string   `json:"id"`
@@ -1005,6 +1007,7 @@ type CreateAutoScaleVmProfileResponse struct {
 	Autoscaleuserid      string            `json:"autoscaleuserid"`
 	Domain               string            `json:"domain"`
 	Domainid             string            `json:"domainid"`
+	Domainpath           string            `json:"domainpath"`
 	Expungevmgraceperiod int               `json:"expungevmgraceperiod"`
 	Fordisplay           bool              `json:"fordisplay"`
 	Id                   string            `json:"id"`
@@ -1233,6 +1236,7 @@ type CreateConditionResponse struct {
 	Countername        string `json:"countername"`
 	Domain             string `json:"domain"`
 	Domainid           string `json:"domainid"`
+	Domainpath         string `json:"domainpath"`
 	Id                 string `json:"id"`
 	JobID              string `json:"jobid"`
 	Jobstatus          int    `json:"jobstatus"`
@@ -1932,6 +1936,7 @@ type DisableAutoScaleVmGroupResponse struct {
 	Created                      string   `json:"created"`
 	Domain                       string   `json:"domain"`
 	Domainid                     string   `json:"domainid"`
+	Domainpath                   string   `json:"domainpath"`
 	Fordisplay                   bool     `json:"fordisplay"`
 	Hasannotations               bool     `json:"hasannotations"`
 	Id                           string   `json:"id"`
@@ -2043,6 +2048,7 @@ type EnableAutoScaleVmGroupResponse struct {
 	Created                      string   `json:"created"`
 	Domain                       string   `json:"domain"`
 	Domainid                     string   `json:"domainid"`
+	Domainpath                   string   `json:"domainpath"`
 	Fordisplay                   bool     `json:"fordisplay"`
 	Hasannotations               bool     `json:"hasannotations"`
 	Id                           string   `json:"id"`
@@ -2511,6 +2517,7 @@ type AutoScalePolicy struct {
 	Conditions []string `json:"conditions"`
 	Domain     string   `json:"domain"`
 	Domainid   string   `json:"domainid"`
+	Domainpath string   `json:"domainpath"`
 	Duration   int      `json:"duration"`
 	Id         string   `json:"id"`
 	JobID      string   `json:"jobid"`
@@ -3017,6 +3024,7 @@ type AutoScaleVmGroup struct {
 	Created                      string   `json:"created"`
 	Domain                       string   `json:"domain"`
 	Domainid                     string   `json:"domainid"`
+	Domainpath                   string   `json:"domainpath"`
 	Fordisplay                   bool     `json:"fordisplay"`
 	Hasannotations               bool     `json:"hasannotations"`
 	Id                           string   `json:"id"`
@@ -3459,6 +3467,7 @@ type AutoScaleVmProfile struct {
 	Autoscaleuserid      string            `json:"autoscaleuserid"`
 	Domain               string            `json:"domain"`
 	Domainid             string            `json:"domainid"`
+	Domainpath           string            `json:"domainpath"`
 	Expungevmgraceperiod int               `json:"expungevmgraceperiod"`
 	Fordisplay           bool              `json:"fordisplay"`
 	Id                   string            `json:"id"`
@@ -3825,6 +3834,7 @@ type Condition struct {
 	Countername        string `json:"countername"`
 	Domain             string `json:"domain"`
 	Domainid           string `json:"domainid"`
+	Domainpath         string `json:"domainpath"`
 	Id                 string `json:"id"`
 	JobID              string `json:"jobid"`
 	Jobstatus          int    `json:"jobstatus"`
@@ -4324,6 +4334,7 @@ type UpdateAutoScalePolicyResponse struct {
 	Conditions []string `json:"conditions"`
 	Domain     string   `json:"domain"`
 	Domainid   string   `json:"domainid"`
+	Domainpath string   `json:"domainpath"`
 	Duration   int      `json:"duration"`
 	Id         string   `json:"id"`
 	JobID      string   `json:"jobid"`
@@ -4620,6 +4631,7 @@ type UpdateAutoScaleVmGroupResponse struct {
 	Created                      string   `json:"created"`
 	Domain                       string   `json:"domain"`
 	Domainid                     string   `json:"domainid"`
+	Domainpath                   string   `json:"domainpath"`
 	Fordisplay                   bool     `json:"fordisplay"`
 	Hasannotations               bool     `json:"hasannotations"`
 	Id                           string   `json:"id"`
@@ -5006,6 +5018,7 @@ type UpdateAutoScaleVmProfileResponse struct {
 	Autoscaleuserid      string            `json:"autoscaleuserid"`
 	Domain               string            `json:"domain"`
 	Domainid             string            `json:"domainid"`
+	Domainpath           string            `json:"domainpath"`
 	Expungevmgraceperiod int               `json:"expungevmgraceperiod"`
 	Fordisplay           bool              `json:"fordisplay"`
 	Id                   string            `json:"id"`
diff --git a/cloudstack/BrocadeVCSService.go b/cloudstack/BrocadeVCSService.go
index a00bfc1..3825883 100644
--- a/cloudstack/BrocadeVCSService.go
+++ b/cloudstack/BrocadeVCSService.go
@@ -466,8 +466,11 @@ type BrocadeVcsDeviceNetwork struct {
 	Aclid                       string                           `json:"aclid"`
 	Aclname                     string                           `json:"aclname"`
 	Acltype                     string                           `json:"acltype"`
+	Asnumber                    int64                            `json:"asnumber"`
+	Asnumberid                  string                           `json:"asnumberid"`
 	Associatednetwork           string                           `json:"associatednetwork"`
 	Associatednetworkid         string                           `json:"associatednetworkid"`
+	Bgppeers                    []interface{}                    `json:"bgppeers"`
 	Broadcastdomaintype         string                           `json:"broadcastdomaintype"`
 	Broadcasturi                string                           `json:"broadcasturi"`
 	Canusefordeploy             bool                             `json:"canusefordeploy"`
@@ -488,6 +491,8 @@ type BrocadeVcsDeviceNetwork struct {
 	Icon                        interface{}                      `json:"icon"`
 	Id                          string                           `json:"id"`
 	Internetprotocol            string                           `json:"internetprotocol"`
+	Ip4routes                   []interface{}                    `json:"ip4routes"`
+	Ip4routing                  string                           `json:"ip4routing"`
 	Ip6cidr                     string                           `json:"ip6cidr"`
 	Ip6dns1                     string                           `json:"ip6dns1"`
 	Ip6dns2                     string                           `json:"ip6dns2"`
diff --git a/cloudstack/ClusterService.go b/cloudstack/ClusterService.go
index a8f4847..219ef40 100644
--- a/cloudstack/ClusterService.go
+++ b/cloudstack/ClusterService.go
@@ -72,6 +72,9 @@ func (p *AddClusterParams) toURLValues() url.Values {
 	if v, found := p.p["allocationstate"]; found {
 		u.Set("allocationstate", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["clustername"]; found {
 		u.Set("clustername", v.(string))
 	}
@@ -150,6 +153,27 @@ func (p *AddClusterParams) GetAllocationstate() (string, bool) {
 	return value, ok
 }
 
+func (p *AddClusterParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *AddClusterParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *AddClusterParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *AddClusterParams) SetClustername(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -562,6 +586,7 @@ func (s *ClusterService) AddCluster(p *AddClusterParams) (*AddClusterResponse, e
 
 type AddClusterResponse struct {
 	Allocationstate       string                       `json:"allocationstate"`
+	Arch                  string                       `json:"arch"`
 	Capacity              []AddClusterResponseCapacity `json:"capacity"`
 	Clustertype           string                       `json:"clustertype"`
 	Cpuovercommitratio    string                       `json:"cpuovercommitratio"`
@@ -591,6 +616,7 @@ type AddClusterResponseCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -1602,6 +1628,7 @@ type ListClustersResponse struct {
 
 type Cluster struct {
 	Allocationstate       string            `json:"allocationstate"`
+	Arch                  string            `json:"arch"`
 	Capacity              []ClusterCapacity `json:"capacity"`
 	Clustertype           string            `json:"clustertype"`
 	Cpuovercommitratio    string            `json:"cpuovercommitratio"`
@@ -1631,6 +1658,7 @@ type ClusterCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -2052,6 +2080,7 @@ type ListClustersMetricsResponse struct {
 
 type ClustersMetric struct {
 	Allocationstate                 string                   `json:"allocationstate"`
+	Arch                            string                   `json:"arch"`
 	Capacity                        []ClustersMetricCapacity `json:"capacity"`
 	Clustertype                     string                   `json:"clustertype"`
 	Cpuallocated                    string                   `json:"cpuallocated"`
@@ -2063,6 +2092,7 @@ type ClustersMetric struct {
 	Cputhreshold                    bool                     `json:"cputhreshold"`
 	Cputotal                        string                   `json:"cputotal"`
 	Cpuused                         string                   `json:"cpuused"`
+	Drsimbalance                    string                   `json:"drsimbalance"`
 	Hasannotations                  bool                     `json:"hasannotations"`
 	Hosts                           string                   `json:"hosts"`
 	Hypervisortype                  string                   `json:"hypervisortype"`
@@ -2099,6 +2129,7 @@ type ClustersMetricCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -2419,6 +2450,9 @@ func (p *UpdateClusterParams) toURLValues() url.Values {
 	if v, found := p.p["allocationstate"]; found {
 		u.Set("allocationstate", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["clustername"]; found {
 		u.Set("clustername", v.(string))
 	}
@@ -2458,6 +2492,27 @@ func (p *UpdateClusterParams) GetAllocationstate() (string, bool) {
 	return value, ok
 }
 
+func (p *UpdateClusterParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *UpdateClusterParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *UpdateClusterParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *UpdateClusterParams) SetClustername(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2593,6 +2648,7 @@ func (s *ClusterService) UpdateCluster(p *UpdateClusterParams) (*UpdateClusterRe
 
 type UpdateClusterResponse struct {
 	Allocationstate       string                          `json:"allocationstate"`
+	Arch                  string                          `json:"arch"`
 	Capacity              []UpdateClusterResponseCapacity `json:"capacity"`
 	Clustertype           string                          `json:"clustertype"`
 	Cpuovercommitratio    string                          `json:"cpuovercommitratio"`
@@ -2622,6 +2678,7 @@ type UpdateClusterResponseCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
diff --git a/cloudstack/ConfigurationService.go b/cloudstack/ConfigurationService.go
index 0a1e39b..93c1ce4 100644
--- a/cloudstack/ConfigurationService.go
+++ b/cloudstack/ConfigurationService.go
@@ -81,6 +81,7 @@ type Capability struct {
 	Allowusercreateprojects                      bool   `json:"allowusercreateprojects"`
 	Allowuserexpungerecovervm                    bool   `json:"allowuserexpungerecovervm"`
 	Allowuserexpungerecovervolume                bool   `json:"allowuserexpungerecovervolume"`
+	Allowuserforcestopvm                         bool   `json:"allowuserforcestopvm"`
 	Allowuserviewalldomainaccounts               bool   `json:"allowuserviewalldomainaccounts"`
 	Allowuserviewdestroyedvm                     bool   `json:"allowuserviewdestroyedvm"`
 	Apilimitinterval                             int    `json:"apilimitinterval"`
@@ -103,6 +104,8 @@ type Capability struct {
 	Projectinviterequired                        bool   `json:"projectinviterequired"`
 	Regionsecondaryenabled                       bool   `json:"regionsecondaryenabled"`
 	Securitygroupsenabled                        bool   `json:"securitygroupsenabled"`
+	Sharedfsvmmincpucount                        int    `json:"sharedfsvmmincpucount"`
+	Sharedfsvmminramsize                         int    `json:"sharedfsvmminramsize"`
 	SupportELB                                   string `json:"supportELB"`
 	Userpublictemplateenabled                    bool   `json:"userpublictemplateenabled"`
 }
diff --git a/cloudstack/DiskOfferingService.go b/cloudstack/DiskOfferingService.go
index e3228fe..079aaea 100644
--- a/cloudstack/DiskOfferingService.go
+++ b/cloudstack/DiskOfferingService.go
@@ -886,7 +886,9 @@ type CreateDiskOfferingResponse struct {
 	Miniops                     int64             `json:"miniops"`
 	Name                        string            `json:"name"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	State                       string            `json:"state"`
 	Storagetype                 string            `json:"storagetype"`
+	Suitableforvirtualmachine   bool              `json:"suitableforvirtualmachine"`
 	Tags                        string            `json:"tags"`
 	Vspherestoragepolicy        string            `json:"vspherestoragepolicy"`
 	Zone                        string            `json:"zone"`
@@ -1034,12 +1036,18 @@ func (p *ListDiskOfferingsParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["storageid"]; found {
 		u.Set("storageid", v.(string))
 	}
 	if v, found := p.p["storagetype"]; found {
 		u.Set("storagetype", v.(string))
 	}
+	if v, found := p.p["virtualmachineid"]; found {
+		u.Set("virtualmachineid", v.(string))
+	}
 	if v, found := p.p["volumeid"]; found {
 		u.Set("volumeid", v.(string))
 	}
@@ -1280,6 +1288,27 @@ func (p *ListDiskOfferingsParams) GetProjectid() (string, bool) {
 	return value, ok
 }
 
+func (p *ListDiskOfferingsParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
+func (p *ListDiskOfferingsParams) ResetState() {
+	if p.p != nil && p.p["state"] != nil {
+		delete(p.p, "state")
+	}
+}
+
+func (p *ListDiskOfferingsParams) GetState() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["state"].(string)
+	return value, ok
+}
+
 func (p *ListDiskOfferingsParams) SetStorageid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1322,6 +1351,27 @@ func (p *ListDiskOfferingsParams) GetStoragetype() (string, bool) {
 	return value, ok
 }
 
+func (p *ListDiskOfferingsParams) SetVirtualmachineid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["virtualmachineid"] = v
+}
+
+func (p *ListDiskOfferingsParams) ResetVirtualmachineid() {
+	if p.p != nil && p.p["virtualmachineid"] != nil {
+		delete(p.p, "virtualmachineid")
+	}
+}
+
+func (p *ListDiskOfferingsParams) GetVirtualmachineid() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["virtualmachineid"].(string)
+	return value, ok
+}
+
 func (p *ListDiskOfferingsParams) SetVolumeid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1509,7 +1559,9 @@ type DiskOffering struct {
 	Miniops                     int64             `json:"miniops"`
 	Name                        string            `json:"name"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	State                       string            `json:"state"`
 	Storagetype                 string            `json:"storagetype"`
+	Suitableforvirtualmachine   bool              `json:"suitableforvirtualmachine"`
 	Tags                        string            `json:"tags"`
 	Vspherestoragepolicy        string            `json:"vspherestoragepolicy"`
 	Zone                        string            `json:"zone"`
@@ -1596,6 +1648,9 @@ func (p *UpdateDiskOfferingParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("sortkey", vv)
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["tags"]; found {
 		u.Set("tags", v.(string))
 	}
@@ -2004,6 +2059,27 @@ func (p *UpdateDiskOfferingParams) GetSortkey() (int, bool) {
 	return value, ok
 }
 
+func (p *UpdateDiskOfferingParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
+func (p *UpdateDiskOfferingParams) ResetState() {
+	if p.p != nil && p.p["state"] != nil {
+		delete(p.p, "state")
+	}
+}
+
+func (p *UpdateDiskOfferingParams) GetState() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["state"].(string)
+	return value, ok
+}
+
 func (p *UpdateDiskOfferingParams) SetTags(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2104,7 +2180,9 @@ type UpdateDiskOfferingResponse struct {
 	Miniops                     int64             `json:"miniops"`
 	Name                        string            `json:"name"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	State                       string            `json:"state"`
 	Storagetype                 string            `json:"storagetype"`
+	Suitableforvirtualmachine   bool              `json:"suitableforvirtualmachine"`
 	Tags                        string            `json:"tags"`
 	Vspherestoragepolicy        string            `json:"vspherestoragepolicy"`
 	Zone                        string            `json:"zone"`
diff --git a/cloudstack/DomainService.go b/cloudstack/DomainService.go
index 3448044..d6adbe8 100644
--- a/cloudstack/DomainService.go
+++ b/cloudstack/DomainService.go
@@ -222,6 +222,7 @@ type CreateDomainResponse struct {
 	Snapshotlimit             string            `json:"snapshotlimit"`
 	Snapshottotal             int64             `json:"snapshottotal"`
 	State                     string            `json:"state"`
+	Taggedresources           []string          `json:"taggedresources"`
 	Templateavailable         string            `json:"templateavailable"`
 	Templatelimit             string            `json:"templatelimit"`
 	Templatetotal             int64             `json:"templatetotal"`
@@ -703,6 +704,7 @@ type DomainChildren struct {
 	Snapshotlimit             string            `json:"snapshotlimit"`
 	Snapshottotal             int64             `json:"snapshottotal"`
 	State                     string            `json:"state"`
+	Taggedresources           []string          `json:"taggedresources"`
 	Templateavailable         string            `json:"templateavailable"`
 	Templatelimit             string            `json:"templatelimit"`
 	Templatetotal             int64             `json:"templatetotal"`
@@ -759,6 +761,9 @@ func (p *ListDomainsParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("showicon", vv)
 	}
+	if v, found := p.p["tag"]; found {
+		u.Set("tag", v.(string))
+	}
 	return u
 }
 
@@ -951,6 +956,27 @@ func (p *ListDomainsParams) GetShowicon() (bool, bool) {
 	return value, ok
 }
 
+func (p *ListDomainsParams) SetTag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tag"] = v
+}
+
+func (p *ListDomainsParams) ResetTag() {
+	if p.p != nil && p.p["tag"] != nil {
+		delete(p.p, "tag")
+	}
+}
+
+func (p *ListDomainsParams) GetTag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["tag"].(string)
+	return value, ok
+}
+
 // You should always use this function to get a new ListDomainsParams instance,
 // as then you are sure you have configured all required params
 func (s *DomainService) NewListDomainsParams() *ListDomainsParams {
@@ -1102,6 +1128,7 @@ type Domain struct {
 	Snapshotlimit             string            `json:"snapshotlimit"`
 	Snapshottotal             int64             `json:"snapshottotal"`
 	State                     string            `json:"state"`
+	Taggedresources           []string          `json:"taggedresources"`
 	Templateavailable         string            `json:"templateavailable"`
 	Templatelimit             string            `json:"templatelimit"`
 	Templatetotal             int64             `json:"templatetotal"`
@@ -1268,6 +1295,7 @@ type UpdateDomainResponse struct {
 	Snapshotlimit             string            `json:"snapshotlimit"`
 	Snapshottotal             int64             `json:"snapshottotal"`
 	State                     string            `json:"state"`
+	Taggedresources           []string          `json:"taggedresources"`
 	Templateavailable         string            `json:"templateavailable"`
 	Templatelimit             string            `json:"templatelimit"`
 	Templatetotal             int64             `json:"templatetotal"`
diff --git a/cloudstack/EventService.go b/cloudstack/EventService.go
index 2755615..c55c86f 100644
--- a/cloudstack/EventService.go
+++ b/cloudstack/EventService.go
@@ -960,6 +960,7 @@ type Event struct {
 	Description  string `json:"description"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	Id           string `json:"id"`
 	JobID        string `json:"jobid"`
 	Jobstatus    int    `json:"jobstatus"`
diff --git a/cloudstack/FirewallService.go b/cloudstack/FirewallService.go
index 8adbda9..6aa94f1 100644
--- a/cloudstack/FirewallService.go
+++ b/cloudstack/FirewallService.go
@@ -4523,7 +4523,7 @@ func (s *FirewallService) NewCreateIpv6FirewallRuleParams(networkid string, prot
 	return p
 }
 
-// Creates an Ipv6 firewall rule in the given network (the network has to belong to VPC)
+// Creates an Ipv6 firewall rule in the given network (the network must not belong to VPC)
 func (s *FirewallService) CreateIpv6FirewallRule(p *CreateIpv6FirewallRuleParams) (*CreateIpv6FirewallRuleResponse, error) {
 	resp, err := s.cs.newRequest("createIpv6FirewallRule", p.toURLValues())
 	if err != nil {
diff --git a/cloudstack/HostService.go b/cloudstack/HostService.go
index 3980564..cd5a9b1 100644
--- a/cloudstack/HostService.go
+++ b/cloudstack/HostService.go
@@ -387,6 +387,7 @@ func (s *HostService) AddBaremetalHost(p *AddBaremetalHostParams) (*AddBaremetal
 
 type AddBaremetalHostResponse struct {
 	Annotation                       string                             `json:"annotation"`
+	Arch                             string                             `json:"arch"`
 	Capabilities                     string                             `json:"capabilities"`
 	Clusterid                        string                             `json:"clusterid"`
 	Clustername                      string                             `json:"clustername"`
@@ -408,6 +409,7 @@ type AddBaremetalHostResponse struct {
 	Disksizetotal                    int64                              `json:"disksizetotal"`
 	Encryptionsupported              bool                               `json:"encryptionsupported"`
 	Events                           string                             `json:"events"`
+	Explicithosttags                 string                             `json:"explicithosttags"`
 	Gpugroup                         []AddBaremetalHostResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                               `json:"hahost"`
 	Hasannotations                   bool                               `json:"hasannotations"`
@@ -417,6 +419,8 @@ type AddBaremetalHostResponse struct {
 	Hypervisor                       string                             `json:"hypervisor"`
 	Hypervisorversion                string                             `json:"hypervisorversion"`
 	Id                               string                             `json:"id"`
+	Implicithosttags                 string                             `json:"implicithosttags"`
+	Instanceconversionsupported      bool                               `json:"instanceconversionsupported"`
 	Ipaddress                        string                             `json:"ipaddress"`
 	Islocalstorageactive             bool                               `json:"islocalstorageactive"`
 	Istagarule                       bool                               `json:"istagarule"`
@@ -910,6 +914,7 @@ func (s *HostService) AddHost(p *AddHostParams) (*AddHostResponse, error) {
 
 type AddHostResponse struct {
 	Annotation                       string                      `json:"annotation"`
+	Arch                             string                      `json:"arch"`
 	Capabilities                     string                      `json:"capabilities"`
 	Clusterid                        string                      `json:"clusterid"`
 	Clustername                      string                      `json:"clustername"`
@@ -931,6 +936,7 @@ type AddHostResponse struct {
 	Disksizetotal                    int64                       `json:"disksizetotal"`
 	Encryptionsupported              bool                        `json:"encryptionsupported"`
 	Events                           string                      `json:"events"`
+	Explicithosttags                 string                      `json:"explicithosttags"`
 	Gpugroup                         []AddHostResponseGpugroup   `json:"gpugroup"`
 	Hahost                           bool                        `json:"hahost"`
 	Hasannotations                   bool                        `json:"hasannotations"`
@@ -940,6 +946,8 @@ type AddHostResponse struct {
 	Hypervisor                       string                      `json:"hypervisor"`
 	Hypervisorversion                string                      `json:"hypervisorversion"`
 	Id                               string                      `json:"id"`
+	Implicithosttags                 string                      `json:"implicithosttags"`
+	Instanceconversionsupported      bool                        `json:"instanceconversionsupported"`
 	Ipaddress                        string                      `json:"ipaddress"`
 	Islocalstorageactive             bool                        `json:"islocalstorageactive"`
 	Istagarule                       bool                        `json:"istagarule"`
@@ -1173,6 +1181,7 @@ func (s *HostService) CancelHostMaintenance(p *CancelHostMaintenanceParams) (*Ca
 
 type CancelHostMaintenanceResponse struct {
 	Annotation                       string                                  `json:"annotation"`
+	Arch                             string                                  `json:"arch"`
 	Capabilities                     string                                  `json:"capabilities"`
 	Clusterid                        string                                  `json:"clusterid"`
 	Clustername                      string                                  `json:"clustername"`
@@ -1194,6 +1203,7 @@ type CancelHostMaintenanceResponse struct {
 	Disksizetotal                    int64                                   `json:"disksizetotal"`
 	Encryptionsupported              bool                                    `json:"encryptionsupported"`
 	Events                           string                                  `json:"events"`
+	Explicithosttags                 string                                  `json:"explicithosttags"`
 	Gpugroup                         []CancelHostMaintenanceResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                                    `json:"hahost"`
 	Hasannotations                   bool                                    `json:"hasannotations"`
@@ -1203,6 +1213,8 @@ type CancelHostMaintenanceResponse struct {
 	Hypervisor                       string                                  `json:"hypervisor"`
 	Hypervisorversion                string                                  `json:"hypervisorversion"`
 	Id                               string                                  `json:"id"`
+	Implicithosttags                 string                                  `json:"implicithosttags"`
+	Instanceconversionsupported      bool                                    `json:"instanceconversionsupported"`
 	Ipaddress                        string                                  `json:"ipaddress"`
 	Islocalstorageactive             bool                                    `json:"islocalstorageactive"`
 	Istagarule                       bool                                    `json:"istagarule"`
@@ -2092,12 +2104,14 @@ type HostForMigration struct {
 	Disksizeallocated                int64  `json:"disksizeallocated"`
 	Disksizetotal                    int64  `json:"disksizetotal"`
 	Events                           string `json:"events"`
+	Explicithosttags                 string `json:"explicithosttags"`
 	Hahost                           bool   `json:"hahost"`
 	Hasenoughcapacity                bool   `json:"hasenoughcapacity"`
 	Hosttags                         string `json:"hosttags"`
 	Hypervisor                       string `json:"hypervisor"`
 	Hypervisorversion                string `json:"hypervisorversion"`
 	Id                               string `json:"id"`
+	Implicithosttags                 string `json:"implicithosttags"`
 	Ipaddress                        string `json:"ipaddress"`
 	Islocalstorageactive             bool   `json:"islocalstorageactive"`
 	JobID                            string `json:"jobid"`
@@ -2500,11 +2514,12 @@ type ListHostTagsResponse struct {
 }
 
 type HostTag struct {
-	Hostid    int64  `json:"hostid"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Name      string `json:"name"`
+	Hostid     int64  `json:"hostid"`
+	Id         string `json:"id"`
+	Isimplicit bool   `json:"isimplicit"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Name       string `json:"name"`
 }
 
 type ListHostsParams struct {
@@ -3045,6 +3060,7 @@ type ListHostsResponse struct {
 
 type Host struct {
 	Annotation                       string                      `json:"annotation"`
+	Arch                             string                      `json:"arch"`
 	Capabilities                     string                      `json:"capabilities"`
 	Clusterid                        string                      `json:"clusterid"`
 	Clustername                      string                      `json:"clustername"`
@@ -3066,6 +3082,7 @@ type Host struct {
 	Disksizetotal                    int64                       `json:"disksizetotal"`
 	Encryptionsupported              bool                        `json:"encryptionsupported"`
 	Events                           string                      `json:"events"`
+	Explicithosttags                 string                      `json:"explicithosttags"`
 	Gpugroup                         []HostGpugroup              `json:"gpugroup"`
 	Hahost                           bool                        `json:"hahost"`
 	Hasannotations                   bool                        `json:"hasannotations"`
@@ -3075,6 +3092,8 @@ type Host struct {
 	Hypervisor                       string                      `json:"hypervisor"`
 	Hypervisorversion                string                      `json:"hypervisorversion"`
 	Id                               string                      `json:"id"`
+	Implicithosttags                 string                      `json:"implicithosttags"`
+	Instanceconversionsupported      bool                        `json:"instanceconversionsupported"`
 	Ipaddress                        string                      `json:"ipaddress"`
 	Islocalstorageactive             bool                        `json:"islocalstorageactive"`
 	Istagarule                       bool                        `json:"istagarule"`
@@ -3663,6 +3682,7 @@ type ListHostsMetricsResponse struct {
 
 type HostsMetric struct {
 	Annotation                       string                      `json:"annotation"`
+	Arch                             string                      `json:"arch"`
 	Capabilities                     string                      `json:"capabilities"`
 	Clusterid                        string                      `json:"clusterid"`
 	Clustername                      string                      `json:"clustername"`
@@ -3691,6 +3711,7 @@ type HostsMetric struct {
 	Disksizetotal                    int64                       `json:"disksizetotal"`
 	Encryptionsupported              bool                        `json:"encryptionsupported"`
 	Events                           string                      `json:"events"`
+	Explicithosttags                 string                      `json:"explicithosttags"`
 	Gpugroup                         []HostsMetricGpugroup       `json:"gpugroup"`
 	Hahost                           bool                        `json:"hahost"`
 	Hasannotations                   bool                        `json:"hasannotations"`
@@ -3700,6 +3721,8 @@ type HostsMetric struct {
 	Hypervisor                       string                      `json:"hypervisor"`
 	Hypervisorversion                string                      `json:"hypervisorversion"`
 	Id                               string                      `json:"id"`
+	Implicithosttags                 string                      `json:"implicithosttags"`
+	Instanceconversionsupported      bool                        `json:"instanceconversionsupported"`
 	Instances                        string                      `json:"instances"`
 	Ipaddress                        string                      `json:"ipaddress"`
 	Islocalstorageactive             bool                        `json:"islocalstorageactive"`
@@ -3844,6 +3867,7 @@ func (s *HostService) PrepareHostForMaintenance(p *PrepareHostForMaintenancePara
 
 type PrepareHostForMaintenanceResponse struct {
 	Annotation                       string                                      `json:"annotation"`
+	Arch                             string                                      `json:"arch"`
 	Capabilities                     string                                      `json:"capabilities"`
 	Clusterid                        string                                      `json:"clusterid"`
 	Clustername                      string                                      `json:"clustername"`
@@ -3865,6 +3889,7 @@ type PrepareHostForMaintenanceResponse struct {
 	Disksizetotal                    int64                                       `json:"disksizetotal"`
 	Encryptionsupported              bool                                        `json:"encryptionsupported"`
 	Events                           string                                      `json:"events"`
+	Explicithosttags                 string                                      `json:"explicithosttags"`
 	Gpugroup                         []PrepareHostForMaintenanceResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                                        `json:"hahost"`
 	Hasannotations                   bool                                        `json:"hasannotations"`
@@ -3874,6 +3899,8 @@ type PrepareHostForMaintenanceResponse struct {
 	Hypervisor                       string                                      `json:"hypervisor"`
 	Hypervisorversion                string                                      `json:"hypervisorversion"`
 	Id                               string                                      `json:"id"`
+	Implicithosttags                 string                                      `json:"implicithosttags"`
+	Instanceconversionsupported      bool                                        `json:"instanceconversionsupported"`
 	Ipaddress                        string                                      `json:"ipaddress"`
 	Islocalstorageactive             bool                                        `json:"islocalstorageactive"`
 	Istagarule                       bool                                        `json:"istagarule"`
@@ -4006,6 +4033,7 @@ func (s *HostService) ReconnectHost(p *ReconnectHostParams) (*ReconnectHostRespo
 
 type ReconnectHostResponse struct {
 	Annotation                       string                          `json:"annotation"`
+	Arch                             string                          `json:"arch"`
 	Capabilities                     string                          `json:"capabilities"`
 	Clusterid                        string                          `json:"clusterid"`
 	Clustername                      string                          `json:"clustername"`
@@ -4027,6 +4055,7 @@ type ReconnectHostResponse struct {
 	Disksizetotal                    int64                           `json:"disksizetotal"`
 	Encryptionsupported              bool                            `json:"encryptionsupported"`
 	Events                           string                          `json:"events"`
+	Explicithosttags                 string                          `json:"explicithosttags"`
 	Gpugroup                         []ReconnectHostResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                            `json:"hahost"`
 	Hasannotations                   bool                            `json:"hasannotations"`
@@ -4036,6 +4065,8 @@ type ReconnectHostResponse struct {
 	Hypervisor                       string                          `json:"hypervisor"`
 	Hypervisorversion                string                          `json:"hypervisorversion"`
 	Id                               string                          `json:"id"`
+	Implicithosttags                 string                          `json:"implicithosttags"`
+	Instanceconversionsupported      bool                            `json:"instanceconversionsupported"`
 	Ipaddress                        string                          `json:"ipaddress"`
 	Islocalstorageactive             bool                            `json:"islocalstorageactive"`
 	Istagarule                       bool                            `json:"istagarule"`
@@ -4482,6 +4513,7 @@ func (s *HostService) UpdateHost(p *UpdateHostParams) (*UpdateHostResponse, erro
 
 type UpdateHostResponse struct {
 	Annotation                       string                       `json:"annotation"`
+	Arch                             string                       `json:"arch"`
 	Capabilities                     string                       `json:"capabilities"`
 	Clusterid                        string                       `json:"clusterid"`
 	Clustername                      string                       `json:"clustername"`
@@ -4503,6 +4535,7 @@ type UpdateHostResponse struct {
 	Disksizetotal                    int64                        `json:"disksizetotal"`
 	Encryptionsupported              bool                         `json:"encryptionsupported"`
 	Events                           string                       `json:"events"`
+	Explicithosttags                 string                       `json:"explicithosttags"`
 	Gpugroup                         []UpdateHostResponseGpugroup `json:"gpugroup"`
 	Hahost                           bool                         `json:"hahost"`
 	Hasannotations                   bool                         `json:"hasannotations"`
@@ -4512,6 +4545,8 @@ type UpdateHostResponse struct {
 	Hypervisor                       string                       `json:"hypervisor"`
 	Hypervisorversion                string                       `json:"hypervisorversion"`
 	Id                               string                       `json:"id"`
+	Implicithosttags                 string                       `json:"implicithosttags"`
+	Instanceconversionsupported      bool                         `json:"instanceconversionsupported"`
 	Ipaddress                        string                       `json:"ipaddress"`
 	Islocalstorageactive             bool                         `json:"islocalstorageactive"`
 	Istagarule                       bool                         `json:"istagarule"`
diff --git a/cloudstack/HypervisorService.go b/cloudstack/HypervisorService.go
index 949033b..7c89bcd 100644
--- a/cloudstack/HypervisorService.go
+++ b/cloudstack/HypervisorService.go
@@ -325,6 +325,12 @@ func (p *UpdateHypervisorCapabilitiesParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["hypervisor"]; found {
+		u.Set("hypervisor", v.(string))
+	}
+	if v, found := p.p["hypervisorversion"]; found {
+		u.Set("hypervisorversion", v.(string))
+	}
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
@@ -355,6 +361,48 @@ func (p *UpdateHypervisorCapabilitiesParams) toURLValues() url.Values {
 	return u
 }
 
+func (p *UpdateHypervisorCapabilitiesParams) SetHypervisor(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["hypervisor"] = v
+}
+
+func (p *UpdateHypervisorCapabilitiesParams) ResetHypervisor() {
+	if p.p != nil && p.p["hypervisor"] != nil {
+		delete(p.p, "hypervisor")
+	}
+}
+
+func (p *UpdateHypervisorCapabilitiesParams) GetHypervisor() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["hypervisor"].(string)
+	return value, ok
+}
+
+func (p *UpdateHypervisorCapabilitiesParams) SetHypervisorversion(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["hypervisorversion"] = v
+}
+
+func (p *UpdateHypervisorCapabilitiesParams) ResetHypervisorversion() {
+	if p.p != nil && p.p["hypervisorversion"] != nil {
+		delete(p.p, "hypervisorversion")
+	}
+}
+
+func (p *UpdateHypervisorCapabilitiesParams) GetHypervisorversion() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["hypervisorversion"].(string)
+	return value, ok
+}
+
 func (p *UpdateHypervisorCapabilitiesParams) SetId(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
diff --git a/cloudstack/ISOService.go b/cloudstack/ISOService.go
index 1c055bf..ac00d45 100644
--- a/cloudstack/ISOService.go
+++ b/cloudstack/ISOService.go
@@ -197,6 +197,7 @@ type AttachIsoResponse struct {
 	Cpuspeed              int                              `json:"cpuspeed"`
 	Cpuused               string                           `json:"cpuused"`
 	Created               string                           `json:"created"`
+	Deleteprotection      bool                             `json:"deleteprotection"`
 	Details               map[string]string                `json:"details"`
 	Diskioread            int64                            `json:"diskioread"`
 	Diskiowrite           int64                            `json:"diskiowrite"`
@@ -208,6 +209,7 @@ type AttachIsoResponse struct {
 	Displayvm             bool                             `json:"displayvm"`
 	Domain                string                           `json:"domain"`
 	Domainid              string                           `json:"domainid"`
+	Domainpath            string                           `json:"domainpath"`
 	Forvirtualnetwork     bool                             `json:"forvirtualnetwork"`
 	Group                 string                           `json:"group"`
 	Groupid               string                           `json:"groupid"`
@@ -221,6 +223,7 @@ type AttachIsoResponse struct {
 	Icon                  interface{}                      `json:"icon"`
 	Id                    string                           `json:"id"`
 	Instancename          string                           `json:"instancename"`
+	Ipaddress             string                           `json:"ipaddress"`
 	Isdynamicallyscalable bool                             `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                           `json:"isodisplaytext"`
 	Isoid                 string                           `json:"isoid"`
@@ -258,6 +261,7 @@ type AttachIsoResponse struct {
 	State                 string                           `json:"state"`
 	Tags                  []Tags                           `json:"tags"`
 	Templatedisplaytext   string                           `json:"templatedisplaytext"`
+	Templateformat        string                           `json:"templateformat"`
 	Templateid            string                           `json:"templateid"`
 	Templatename          string                           `json:"templatename"`
 	Templatetype          string                           `json:"templatetype"`
@@ -269,6 +273,7 @@ type AttachIsoResponse struct {
 	Userid                string                           `json:"userid"`
 	Username              string                           `json:"username"`
 	Vgpu                  string                           `json:"vgpu"`
+	Vmtype                string                           `json:"vmtype"`
 	Vnfdetails            map[string]string                `json:"vnfdetails"`
 	Vnfnics               []string                         `json:"vnfnics"`
 	Zoneid                string                           `json:"zoneid"`
@@ -280,6 +285,7 @@ type AttachIsoResponseSecuritygroup struct {
 	Description         string                               `json:"description"`
 	Domain              string                               `json:"domain"`
 	Domainid            string                               `json:"domainid"`
+	Domainpath          string                               `json:"domainpath"`
 	Egressrule          []AttachIsoResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                               `json:"id"`
 	Ingressrule         []AttachIsoResponseSecuritygroupRule `json:"ingressrule"`
@@ -305,16 +311,18 @@ type AttachIsoResponseSecuritygroupRule struct {
 }
 
 type AttachIsoResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *AttachIsoResponse) UnmarshalJSON(b []byte) error {
@@ -500,6 +508,7 @@ func (s *ISOService) CopyIso(p *CopyIsoParams) (*CopyIsoResponse, error) {
 type CopyIsoResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -513,6 +522,7 @@ type CopyIsoResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -805,6 +815,7 @@ type DetachIsoResponse struct {
 	Cpuspeed              int                              `json:"cpuspeed"`
 	Cpuused               string                           `json:"cpuused"`
 	Created               string                           `json:"created"`
+	Deleteprotection      bool                             `json:"deleteprotection"`
 	Details               map[string]string                `json:"details"`
 	Diskioread            int64                            `json:"diskioread"`
 	Diskiowrite           int64                            `json:"diskiowrite"`
@@ -816,6 +827,7 @@ type DetachIsoResponse struct {
 	Displayvm             bool                             `json:"displayvm"`
 	Domain                string                           `json:"domain"`
 	Domainid              string                           `json:"domainid"`
+	Domainpath            string                           `json:"domainpath"`
 	Forvirtualnetwork     bool                             `json:"forvirtualnetwork"`
 	Group                 string                           `json:"group"`
 	Groupid               string                           `json:"groupid"`
@@ -829,6 +841,7 @@ type DetachIsoResponse struct {
 	Icon                  interface{}                      `json:"icon"`
 	Id                    string                           `json:"id"`
 	Instancename          string                           `json:"instancename"`
+	Ipaddress             string                           `json:"ipaddress"`
 	Isdynamicallyscalable bool                             `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                           `json:"isodisplaytext"`
 	Isoid                 string                           `json:"isoid"`
@@ -866,6 +879,7 @@ type DetachIsoResponse struct {
 	State                 string                           `json:"state"`
 	Tags                  []Tags                           `json:"tags"`
 	Templatedisplaytext   string                           `json:"templatedisplaytext"`
+	Templateformat        string                           `json:"templateformat"`
 	Templateid            string                           `json:"templateid"`
 	Templatename          string                           `json:"templatename"`
 	Templatetype          string                           `json:"templatetype"`
@@ -877,6 +891,7 @@ type DetachIsoResponse struct {
 	Userid                string                           `json:"userid"`
 	Username              string                           `json:"username"`
 	Vgpu                  string                           `json:"vgpu"`
+	Vmtype                string                           `json:"vmtype"`
 	Vnfdetails            map[string]string                `json:"vnfdetails"`
 	Vnfnics               []string                         `json:"vnfnics"`
 	Zoneid                string                           `json:"zoneid"`
@@ -888,6 +903,7 @@ type DetachIsoResponseSecuritygroup struct {
 	Description         string                               `json:"description"`
 	Domain              string                               `json:"domain"`
 	Domainid            string                               `json:"domainid"`
+	Domainpath          string                               `json:"domainpath"`
 	Egressrule          []DetachIsoResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                               `json:"id"`
 	Ingressrule         []DetachIsoResponseSecuritygroupRule `json:"ingressrule"`
@@ -913,16 +929,18 @@ type DetachIsoResponseSecuritygroupRule struct {
 }
 
 type DetachIsoResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *DetachIsoResponse) UnmarshalJSON(b []byte) error {
@@ -1244,6 +1262,9 @@ func (p *ListIsosParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["bootable"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("bootable", vv)
@@ -1345,6 +1366,27 @@ func (p *ListIsosParams) GetAccount() (string, bool) {
 	return value, ok
 }
 
+func (p *ListIsosParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *ListIsosParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *ListIsosParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *ListIsosParams) SetBootable(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1902,6 +1944,7 @@ type ListIsosResponse struct {
 type Iso struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -1915,6 +1958,7 @@ type Iso struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -1995,6 +2039,9 @@ func (p *RegisterIsoParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["bootable"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("bootable", vv)
@@ -2074,6 +2121,27 @@ func (p *RegisterIsoParams) GetAccount() (string, bool) {
 	return value, ok
 }
 
+func (p *RegisterIsoParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *RegisterIsoParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *RegisterIsoParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *RegisterIsoParams) SetBootable(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2444,6 +2512,7 @@ func (s *ISOService) RegisterIso(p *RegisterIsoParams) (*RegisterIsoResponse, er
 type RegisterIsoResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -2457,6 +2526,7 @@ type RegisterIsoResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -2534,6 +2604,9 @@ func (p *UpdateIsoParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["bootable"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("bootable", vv)
@@ -2590,6 +2663,27 @@ func (p *UpdateIsoParams) toURLValues() url.Values {
 	return u
 }
 
+func (p *UpdateIsoParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *UpdateIsoParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *UpdateIsoParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *UpdateIsoParams) SetBootable(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2911,6 +3005,7 @@ func (s *ISOService) UpdateIso(p *UpdateIsoParams) (*UpdateIsoResponse, error) {
 type UpdateIsoResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -2924,6 +3019,7 @@ type UpdateIsoResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
diff --git a/cloudstack/InternalLBService.go b/cloudstack/InternalLBService.go
index 9c4f1e1..b4a27c8 100644
--- a/cloudstack/InternalLBService.go
+++ b/cloudstack/InternalLBService.go
@@ -1044,6 +1044,7 @@ type InternalLoadBalancerVM struct {
 	Dns2                string                                     `json:"dns2"`
 	Domain              string                                     `json:"domain"`
 	Domainid            string                                     `json:"domainid"`
+	Domainpath          string                                     `json:"domainpath"`
 	Gateway             string                                     `json:"gateway"`
 	Guestipaddress      string                                     `json:"guestipaddress"`
 	Guestmacaddress     string                                     `json:"guestmacaddress"`
@@ -1190,6 +1191,7 @@ type StartInternalLoadBalancerVMResponse struct {
 	Dns2                string                                                  `json:"dns2"`
 	Domain              string                                                  `json:"domain"`
 	Domainid            string                                                  `json:"domainid"`
+	Domainpath          string                                                  `json:"domainpath"`
 	Gateway             string                                                  `json:"gateway"`
 	Guestipaddress      string                                                  `json:"guestipaddress"`
 	Guestmacaddress     string                                                  `json:"guestmacaddress"`
@@ -1361,6 +1363,7 @@ type StopInternalLoadBalancerVMResponse struct {
 	Dns2                string                                                 `json:"dns2"`
 	Domain              string                                                 `json:"domain"`
 	Domainid            string                                                 `json:"domainid"`
+	Domainpath          string                                                 `json:"domainpath"`
 	Gateway             string                                                 `json:"gateway"`
 	Guestipaddress      string                                                 `json:"guestipaddress"`
 	Guestmacaddress     string                                                 `json:"guestmacaddress"`
diff --git a/cloudstack/KubernetesService.go b/cloudstack/KubernetesService.go
index 2aaf352..9b06673 100644
--- a/cloudstack/KubernetesService.go
+++ b/cloudstack/KubernetesService.go
@@ -73,6 +73,9 @@ func (p *AddKubernetesSupportedVersionParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["checksum"]; found {
 		u.Set("checksum", v.(string))
 	}
@@ -103,6 +106,27 @@ func (p *AddKubernetesSupportedVersionParams) toURLValues() url.Values {
 	return u
 }
 
+func (p *AddKubernetesSupportedVersionParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *AddKubernetesSupportedVersionParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *AddKubernetesSupportedVersionParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *AddKubernetesSupportedVersionParams) SetChecksum(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -854,6 +878,7 @@ type CreateKubernetesClusterResponse struct {
 	Description           string            `json:"description"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Domainpath            string            `json:"domainpath"`
 	Endpoint              string            `json:"endpoint"`
 	Hasannotations        bool              `json:"hasannotations"`
 	Id                    string            `json:"id"`
@@ -1593,6 +1618,7 @@ type KubernetesCluster struct {
 	Description           string            `json:"description"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Domainpath            string            `json:"domainpath"`
 	Endpoint              string            `json:"endpoint"`
 	Hasannotations        bool              `json:"hasannotations"`
 	Id                    string            `json:"id"`
@@ -2175,6 +2201,7 @@ type ScaleKubernetesClusterResponse struct {
 	Description           string            `json:"description"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Domainpath            string            `json:"domainpath"`
 	Endpoint              string            `json:"endpoint"`
 	Hasannotations        bool              `json:"hasannotations"`
 	Id                    string            `json:"id"`
@@ -2295,6 +2322,7 @@ type StartKubernetesClusterResponse struct {
 	Description           string            `json:"description"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Domainpath            string            `json:"domainpath"`
 	Endpoint              string            `json:"endpoint"`
 	Hasannotations        bool              `json:"hasannotations"`
 	Id                    string            `json:"id"`
@@ -2627,6 +2655,7 @@ type UpgradeKubernetesClusterResponse struct {
 	Description           string            `json:"description"`
 	Domain                string            `json:"domain"`
 	Domainid              string            `json:"domainid"`
+	Domainpath            string            `json:"domainpath"`
 	Endpoint              string            `json:"endpoint"`
 	Hasannotations        bool              `json:"hasannotations"`
 	Id                    string            `json:"id"`
diff --git a/cloudstack/LDAPService.go b/cloudstack/LDAPService.go
index 4c25f23..4d3a707 100644
--- a/cloudstack/LDAPService.go
+++ b/cloudstack/LDAPService.go
@@ -1196,6 +1196,7 @@ type LdapCreateAccountResponse struct {
 	Snapshotlimit             string                          `json:"snapshotlimit"`
 	Snapshottotal             int64                           `json:"snapshottotal"`
 	State                     string                          `json:"state"`
+	Taggedresources           []string                        `json:"taggedresources"`
 	Templateavailable         string                          `json:"templateavailable"`
 	Templatelimit             string                          `json:"templatelimit"`
 	Templatetotal             int64                           `json:"templatetotal"`
diff --git a/cloudstack/LimitService.go b/cloudstack/LimitService.go
index 81b6513..58e74e5 100644
--- a/cloudstack/LimitService.go
+++ b/cloudstack/LimitService.go
@@ -131,6 +131,9 @@ func (p *ListResourceLimitsParams) toURLValues() url.Values {
 	if v, found := p.p["resourcetypename"]; found {
 		u.Set("resourcetypename", v.(string))
 	}
+	if v, found := p.p["tag"]; found {
+		u.Set("tag", v.(string))
+	}
 	return u
 }
 
@@ -365,6 +368,27 @@ func (p *ListResourceLimitsParams) GetResourcetypename() (string, bool) {
 	return value, ok
 }
 
+func (p *ListResourceLimitsParams) SetTag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tag"] = v
+}
+
+func (p *ListResourceLimitsParams) ResetTag() {
+	if p.p != nil && p.p["tag"] != nil {
+		delete(p.p, "tag")
+	}
+}
+
+func (p *ListResourceLimitsParams) GetTag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["tag"].(string)
+	return value, ok
+}
+
 // You should always use this function to get a new ListResourceLimitsParams instance,
 // as then you are sure you have configured all required params
 func (s *LimitService) NewListResourceLimitsParams() *ListResourceLimitsParams {
@@ -397,6 +421,7 @@ type ResourceLimit struct {
 	Account          string `json:"account"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	JobID            string `json:"jobid"`
 	Jobstatus        int    `json:"jobstatus"`
 	Max              int64  `json:"max"`
@@ -404,6 +429,7 @@ type ResourceLimit struct {
 	Projectid        string `json:"projectid"`
 	Resourcetype     string `json:"resourcetype"`
 	Resourcetypename string `json:"resourcetypename"`
+	Tag              string `json:"tag"`
 }
 
 type ResetApiLimitParams struct {
@@ -521,6 +547,9 @@ func (p *UpdateResourceCountParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("resourcetype", vv)
 	}
+	if v, found := p.p["tag"]; found {
+		u.Set("tag", v.(string))
+	}
 	return u
 }
 
@@ -608,6 +637,27 @@ func (p *UpdateResourceCountParams) GetResourcetype() (int, bool) {
 	return value, ok
 }
 
+func (p *UpdateResourceCountParams) SetTag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tag"] = v
+}
+
+func (p *UpdateResourceCountParams) ResetTag() {
+	if p.p != nil && p.p["tag"] != nil {
+		delete(p.p, "tag")
+	}
+}
+
+func (p *UpdateResourceCountParams) GetTag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["tag"].(string)
+	return value, ok
+}
+
 // You should always use this function to get a new UpdateResourceCountParams instance,
 // as then you are sure you have configured all required params
 func (s *LimitService) NewUpdateResourceCountParams(domainid string) *UpdateResourceCountParams {
@@ -617,7 +667,7 @@ func (s *LimitService) NewUpdateResourceCountParams(domainid string) *UpdateReso
 	return p
 }
 
-// Recalculate and update resource count for an account or domain.
+// Recalculate and update resource count for an account or domain. This also executes some cleanup tasks before calculating resource counts.
 func (s *LimitService) UpdateResourceCount(p *UpdateResourceCountParams) (*UpdateResourceCountResponse, error) {
 	resp, err := s.cs.newRequest("updateResourceCount", p.toURLValues())
 	if err != nil {
@@ -636,6 +686,7 @@ type UpdateResourceCountResponse struct {
 	Account          string `json:"account"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	JobID            string `json:"jobid"`
 	Jobstatus        int    `json:"jobstatus"`
 	Project          string `json:"project"`
@@ -643,6 +694,7 @@ type UpdateResourceCountResponse struct {
 	Resourcecount    int64  `json:"resourcecount"`
 	Resourcetype     string `json:"resourcetype"`
 	Resourcetypename string `json:"resourcetypename"`
+	Tag              string `json:"tag"`
 }
 
 type UpdateResourceLimitParams struct {
@@ -671,6 +723,9 @@ func (p *UpdateResourceLimitParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("resourcetype", vv)
 	}
+	if v, found := p.p["tag"]; found {
+		u.Set("tag", v.(string))
+	}
 	return u
 }
 
@@ -779,6 +834,27 @@ func (p *UpdateResourceLimitParams) GetResourcetype() (int, bool) {
 	return value, ok
 }
 
+func (p *UpdateResourceLimitParams) SetTag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tag"] = v
+}
+
+func (p *UpdateResourceLimitParams) ResetTag() {
+	if p.p != nil && p.p["tag"] != nil {
+		delete(p.p, "tag")
+	}
+}
+
+func (p *UpdateResourceLimitParams) GetTag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["tag"].(string)
+	return value, ok
+}
+
 // You should always use this function to get a new UpdateResourceLimitParams instance,
 // as then you are sure you have configured all required params
 func (s *LimitService) NewUpdateResourceLimitParams(resourcetype int) *UpdateResourceLimitParams {
@@ -807,6 +883,7 @@ type UpdateResourceLimitResponse struct {
 	Account          string `json:"account"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	JobID            string `json:"jobid"`
 	Jobstatus        int    `json:"jobstatus"`
 	Max              int64  `json:"max"`
@@ -814,4 +891,5 @@ type UpdateResourceLimitResponse struct {
 	Projectid        string `json:"projectid"`
 	Resourcetype     string `json:"resourcetype"`
 	Resourcetypename string `json:"resourcetypename"`
+	Tag              string `json:"tag"`
 }
diff --git a/cloudstack/LoadBalancerService.go b/cloudstack/LoadBalancerService.go
index 5a40d05..674a22a 100644
--- a/cloudstack/LoadBalancerService.go
+++ b/cloudstack/LoadBalancerService.go
@@ -1267,6 +1267,7 @@ type CreateGlobalLoadBalancerRuleResponse struct {
 	Description                 string                                                 `json:"description"`
 	Domain                      string                                                 `json:"domain"`
 	Domainid                    string                                                 `json:"domainid"`
+	Domainpath                  string                                                 `json:"domainpath"`
 	Gslbdomainname              string                                                 `json:"gslbdomainname"`
 	Gslblbmethod                string                                                 `json:"gslblbmethod"`
 	Gslbservicetype             string                                                 `json:"gslbservicetype"`
@@ -1288,6 +1289,7 @@ type CreateGlobalLoadBalancerRuleResponseLoadbalancerrule struct {
 	Description string `json:"description"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Fordisplay  bool   `json:"fordisplay"`
 	Id          string `json:"id"`
 	Name        string `json:"name"`
@@ -2123,6 +2125,7 @@ type CreateLoadBalancerResponse struct {
 	Description              string                                           `json:"description"`
 	Domain                   string                                           `json:"domain"`
 	Domainid                 string                                           `json:"domainid"`
+	Domainpath               string                                           `json:"domainpath"`
 	Fordisplay               bool                                             `json:"fordisplay"`
 	Id                       string                                           `json:"id"`
 	JobID                    string                                           `json:"jobid"`
@@ -2558,6 +2561,7 @@ type CreateLoadBalancerRuleResponse struct {
 	Description string `json:"description"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Fordisplay  bool   `json:"fordisplay"`
 	Id          string `json:"id"`
 	JobID       string `json:"jobid"`
@@ -3564,6 +3568,7 @@ type GlobalLoadBalancerRule struct {
 	Description                 string                                   `json:"description"`
 	Domain                      string                                   `json:"domain"`
 	Domainid                    string                                   `json:"domainid"`
+	Domainpath                  string                                   `json:"domainpath"`
 	Gslbdomainname              string                                   `json:"gslbdomainname"`
 	Gslblbmethod                string                                   `json:"gslblbmethod"`
 	Gslbservicetype             string                                   `json:"gslbservicetype"`
@@ -3585,6 +3590,7 @@ type GlobalLoadBalancerRuleLoadbalancerrule struct {
 	Description string `json:"description"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Fordisplay  bool   `json:"fordisplay"`
 	Id          string `json:"id"`
 	Name        string `json:"name"`
@@ -4842,6 +4848,7 @@ type LoadBalancerRule struct {
 	Description string `json:"description"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Fordisplay  bool   `json:"fordisplay"`
 	Id          string `json:"id"`
 	JobID       string `json:"jobid"`
@@ -5383,6 +5390,7 @@ type LoadBalancer struct {
 	Description              string                             `json:"description"`
 	Domain                   string                             `json:"domain"`
 	Domainid                 string                             `json:"domainid"`
+	Domainpath               string                             `json:"domainpath"`
 	Fordisplay               bool                               `json:"fordisplay"`
 	Id                       string                             `json:"id"`
 	JobID                    string                             `json:"jobid"`
@@ -6227,6 +6235,7 @@ type UpdateGlobalLoadBalancerRuleResponse struct {
 	Description                 string                                                 `json:"description"`
 	Domain                      string                                                 `json:"domain"`
 	Domainid                    string                                                 `json:"domainid"`
+	Domainpath                  string                                                 `json:"domainpath"`
 	Gslbdomainname              string                                                 `json:"gslbdomainname"`
 	Gslblbmethod                string                                                 `json:"gslblbmethod"`
 	Gslbservicetype             string                                                 `json:"gslbservicetype"`
@@ -6248,6 +6257,7 @@ type UpdateGlobalLoadBalancerRuleResponseLoadbalancerrule struct {
 	Description string `json:"description"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Fordisplay  bool   `json:"fordisplay"`
 	Id          string `json:"id"`
 	Name        string `json:"name"`
@@ -6705,6 +6715,7 @@ type UpdateLoadBalancerResponse struct {
 	Description              string                                           `json:"description"`
 	Domain                   string                                           `json:"domain"`
 	Domainid                 string                                           `json:"domainid"`
+	Domainpath               string                                           `json:"domainpath"`
 	Fordisplay               bool                                             `json:"fordisplay"`
 	Id                       string                                           `json:"id"`
 	JobID                    string                                           `json:"jobid"`
@@ -6965,6 +6976,7 @@ type UpdateLoadBalancerRuleResponse struct {
 	Description string `json:"description"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Fordisplay  bool   `json:"fordisplay"`
 	Id          string `json:"id"`
 	JobID       string `json:"jobid"`
diff --git a/cloudstack/NetworkOfferingService.go b/cloudstack/NetworkOfferingService.go
index 3f0e3c2..3572bad 100644
--- a/cloudstack/NetworkOfferingService.go
+++ b/cloudstack/NetworkOfferingService.go
@@ -78,6 +78,10 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("enable", vv)
 	}
+	if v, found := p.p["fornsx"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("fornsx", vv)
+	}
 	if v, found := p.p["fortungsten"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("fortungsten", vv)
@@ -107,10 +111,24 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["networkmode"]; found {
+		u.Set("networkmode", v.(string))
+	}
 	if v, found := p.p["networkrate"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("networkrate", vv)
 	}
+	if v, found := p.p["nsxsupportlb"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("nsxsupportlb", vv)
+	}
+	if v, found := p.p["nsxsupportsinternallb"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("nsxsupportsinternallb", vv)
+	}
+	if v, found := p.p["routingmode"]; found {
+		u.Set("routingmode", v.(string))
+	}
 	if v, found := p.p["servicecapabilitylist"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -128,6 +146,10 @@ func (p *CreateNetworkOfferingParams) toURLValues() url.Values {
 			u.Set(fmt.Sprintf("serviceproviderlist[%d].provider", i), m[k])
 		}
 	}
+	if v, found := p.p["specifyasnumber"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("specifyasnumber", vv)
+	}
 	if v, found := p.p["specifyipranges"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("specifyipranges", vv)
@@ -300,6 +322,27 @@ func (p *CreateNetworkOfferingParams) GetEnable() (bool, bool) {
 	return value, ok
 }
 
+func (p *CreateNetworkOfferingParams) SetFornsx(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["fornsx"] = v
+}
+
+func (p *CreateNetworkOfferingParams) ResetFornsx() {
+	if p.p != nil && p.p["fornsx"] != nil {
+		delete(p.p, "fornsx")
+	}
+}
+
+func (p *CreateNetworkOfferingParams) GetFornsx() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["fornsx"].(bool)
+	return value, ok
+}
+
 func (p *CreateNetworkOfferingParams) SetFortungsten(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -468,6 +511,27 @@ func (p *CreateNetworkOfferingParams) GetName() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateNetworkOfferingParams) SetNetworkmode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["networkmode"] = v
+}
+
+func (p *CreateNetworkOfferingParams) ResetNetworkmode() {
+	if p.p != nil && p.p["networkmode"] != nil {
+		delete(p.p, "networkmode")
+	}
+}
+
+func (p *CreateNetworkOfferingParams) GetNetworkmode() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["networkmode"].(string)
+	return value, ok
+}
+
 func (p *CreateNetworkOfferingParams) SetNetworkrate(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -489,6 +553,69 @@ func (p *CreateNetworkOfferingParams) GetNetworkrate() (int, bool) {
 	return value, ok
 }
 
+func (p *CreateNetworkOfferingParams) SetNsxsupportlb(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["nsxsupportlb"] = v
+}
+
+func (p *CreateNetworkOfferingParams) ResetNsxsupportlb() {
+	if p.p != nil && p.p["nsxsupportlb"] != nil {
+		delete(p.p, "nsxsupportlb")
+	}
+}
+
+func (p *CreateNetworkOfferingParams) GetNsxsupportlb() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["nsxsupportlb"].(bool)
+	return value, ok
+}
+
+func (p *CreateNetworkOfferingParams) SetNsxsupportsinternallb(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["nsxsupportsinternallb"] = v
+}
+
+func (p *CreateNetworkOfferingParams) ResetNsxsupportsinternallb() {
+	if p.p != nil && p.p["nsxsupportsinternallb"] != nil {
+		delete(p.p, "nsxsupportsinternallb")
+	}
+}
+
+func (p *CreateNetworkOfferingParams) GetNsxsupportsinternallb() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["nsxsupportsinternallb"].(bool)
+	return value, ok
+}
+
+func (p *CreateNetworkOfferingParams) SetRoutingmode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["routingmode"] = v
+}
+
+func (p *CreateNetworkOfferingParams) ResetRoutingmode() {
+	if p.p != nil && p.p["routingmode"] != nil {
+		delete(p.p, "routingmode")
+	}
+}
+
+func (p *CreateNetworkOfferingParams) GetRoutingmode() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["routingmode"].(string)
+	return value, ok
+}
+
 func (p *CreateNetworkOfferingParams) SetServicecapabilitylist(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -552,6 +679,27 @@ func (p *CreateNetworkOfferingParams) GetServiceproviderlist() (map[string]strin
 	return value, ok
 }
 
+func (p *CreateNetworkOfferingParams) SetSpecifyasnumber(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["specifyasnumber"] = v
+}
+
+func (p *CreateNetworkOfferingParams) ResetSpecifyasnumber() {
+	if p.p != nil && p.p["specifyasnumber"] != nil {
+		delete(p.p, "specifyasnumber")
+	}
+}
+
+func (p *CreateNetworkOfferingParams) GetSpecifyasnumber() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["specifyasnumber"].(bool)
+	return value, ok
+}
+
 func (p *CreateNetworkOfferingParams) SetSpecifyipranges(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -718,6 +866,7 @@ type CreateNetworkOfferingResponse struct {
 	Domain                   string                                 `json:"domain"`
 	Domainid                 string                                 `json:"domainid"`
 	Egressdefaultpolicy      bool                                   `json:"egressdefaultpolicy"`
+	Fornsx                   bool                                   `json:"fornsx"`
 	Fortungsten              bool                                   `json:"fortungsten"`
 	Forvpc                   bool                                   `json:"forvpc"`
 	Guestiptype              string                                 `json:"guestiptype"`
@@ -730,12 +879,16 @@ type CreateNetworkOfferingResponse struct {
 	Jobstatus                int                                    `json:"jobstatus"`
 	Maxconnections           int                                    `json:"maxconnections"`
 	Name                     string                                 `json:"name"`
+	Networkmode              string                                 `json:"networkmode"`
 	Networkrate              int                                    `json:"networkrate"`
+	Routingmode              string                                 `json:"routingmode"`
 	Service                  []CreateNetworkOfferingResponseService `json:"service"`
 	Serviceofferingid        string                                 `json:"serviceofferingid"`
+	Specifyasnumber          bool                                   `json:"specifyasnumber"`
 	Specifyipranges          bool                                   `json:"specifyipranges"`
 	Specifyvlan              bool                                   `json:"specifyvlan"`
 	State                    string                                 `json:"state"`
+	Supportsinternallb       bool                                   `json:"supportsinternallb"`
 	Supportspublicaccess     bool                                   `json:"supportspublicaccess"`
 	Supportsstrechedl2subnet bool                                   `json:"supportsstrechedl2subnet"`
 	Tags                     string                                 `json:"tags"`
@@ -913,6 +1066,9 @@ func (p *ListNetworkOfferingsParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("pagesize", vv)
 	}
+	if v, found := p.p["routingmode"]; found {
+		u.Set("routingmode", v.(string))
+	}
 	if v, found := p.p["sourcenatsupported"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("sourcenatsupported", vv)
@@ -1217,6 +1373,27 @@ func (p *ListNetworkOfferingsParams) GetPagesize() (int, bool) {
 	return value, ok
 }
 
+func (p *ListNetworkOfferingsParams) SetRoutingmode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["routingmode"] = v
+}
+
+func (p *ListNetworkOfferingsParams) ResetRoutingmode() {
+	if p.p != nil && p.p["routingmode"] != nil {
+		delete(p.p, "routingmode")
+	}
+}
+
+func (p *ListNetworkOfferingsParams) GetRoutingmode() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["routingmode"].(string)
+	return value, ok
+}
+
 func (p *ListNetworkOfferingsParams) SetSourcenatsupported(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1505,6 +1682,7 @@ type NetworkOffering struct {
 	Domain                   string                           `json:"domain"`
 	Domainid                 string                           `json:"domainid"`
 	Egressdefaultpolicy      bool                             `json:"egressdefaultpolicy"`
+	Fornsx                   bool                             `json:"fornsx"`
 	Fortungsten              bool                             `json:"fortungsten"`
 	Forvpc                   bool                             `json:"forvpc"`
 	Guestiptype              string                           `json:"guestiptype"`
@@ -1517,12 +1695,16 @@ type NetworkOffering struct {
 	Jobstatus                int                              `json:"jobstatus"`
 	Maxconnections           int                              `json:"maxconnections"`
 	Name                     string                           `json:"name"`
+	Networkmode              string                           `json:"networkmode"`
 	Networkrate              int                              `json:"networkrate"`
+	Routingmode              string                           `json:"routingmode"`
 	Service                  []NetworkOfferingServiceInternal `json:"service"`
 	Serviceofferingid        string                           `json:"serviceofferingid"`
+	Specifyasnumber          bool                             `json:"specifyasnumber"`
 	Specifyipranges          bool                             `json:"specifyipranges"`
 	Specifyvlan              bool                             `json:"specifyvlan"`
 	State                    string                           `json:"state"`
+	Supportsinternallb       bool                             `json:"supportsinternallb"`
 	Supportspublicaccess     bool                             `json:"supportspublicaccess"`
 	Supportsstrechedl2subnet bool                             `json:"supportsstrechedl2subnet"`
 	Tags                     string                           `json:"tags"`
@@ -1868,6 +2050,7 @@ type UpdateNetworkOfferingResponse struct {
 	Domain                   string                                 `json:"domain"`
 	Domainid                 string                                 `json:"domainid"`
 	Egressdefaultpolicy      bool                                   `json:"egressdefaultpolicy"`
+	Fornsx                   bool                                   `json:"fornsx"`
 	Fortungsten              bool                                   `json:"fortungsten"`
 	Forvpc                   bool                                   `json:"forvpc"`
 	Guestiptype              string                                 `json:"guestiptype"`
@@ -1880,12 +2063,16 @@ type UpdateNetworkOfferingResponse struct {
 	Jobstatus                int                                    `json:"jobstatus"`
 	Maxconnections           int                                    `json:"maxconnections"`
 	Name                     string                                 `json:"name"`
+	Networkmode              string                                 `json:"networkmode"`
 	Networkrate              int                                    `json:"networkrate"`
+	Routingmode              string                                 `json:"routingmode"`
 	Service                  []UpdateNetworkOfferingResponseService `json:"service"`
 	Serviceofferingid        string                                 `json:"serviceofferingid"`
+	Specifyasnumber          bool                                   `json:"specifyasnumber"`
 	Specifyipranges          bool                                   `json:"specifyipranges"`
 	Specifyvlan              bool                                   `json:"specifyvlan"`
 	State                    string                                 `json:"state"`
+	Supportsinternallb       bool                                   `json:"supportsinternallb"`
 	Supportspublicaccess     bool                                   `json:"supportspublicaccess"`
 	Supportsstrechedl2subnet bool                                   `json:"supportsstrechedl2subnet"`
 	Tags                     string                                 `json:"tags"`
diff --git a/cloudstack/NetworkService.go b/cloudstack/NetworkService.go
index 847ecfe..93dcc8d 100644
--- a/cloudstack/NetworkService.go
+++ b/cloudstack/NetworkService.go
@@ -462,13 +462,25 @@ func (p *CreateNetworkParams) toURLValues() url.Values {
 	if v, found := p.p["acltype"]; found {
 		u.Set("acltype", v.(string))
 	}
+	if v, found := p.p["asnumber"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("asnumber", vv)
+	}
 	if v, found := p.p["associatednetworkid"]; found {
 		u.Set("associatednetworkid", v.(string))
 	}
+	if v, found := p.p["bgppeerids"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("bgppeerids", vv)
+	}
 	if v, found := p.p["bypassvlanoverlapcheck"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("bypassvlanoverlapcheck", vv)
 	}
+	if v, found := p.p["cidrsize"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("cidrsize", vv)
+	}
 	if v, found := p.p["displaynetwork"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("displaynetwork", vv)
@@ -642,6 +654,27 @@ func (p *CreateNetworkParams) GetAcltype() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateNetworkParams) SetAsnumber(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["asnumber"] = v
+}
+
+func (p *CreateNetworkParams) ResetAsnumber() {
+	if p.p != nil && p.p["asnumber"] != nil {
+		delete(p.p, "asnumber")
+	}
+}
+
+func (p *CreateNetworkParams) GetAsnumber() (int64, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["asnumber"].(int64)
+	return value, ok
+}
+
 func (p *CreateNetworkParams) SetAssociatednetworkid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -663,6 +696,27 @@ func (p *CreateNetworkParams) GetAssociatednetworkid() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateNetworkParams) SetBgppeerids(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bgppeerids"] = v
+}
+
+func (p *CreateNetworkParams) ResetBgppeerids() {
+	if p.p != nil && p.p["bgppeerids"] != nil {
+		delete(p.p, "bgppeerids")
+	}
+}
+
+func (p *CreateNetworkParams) GetBgppeerids() ([]string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["bgppeerids"].([]string)
+	return value, ok
+}
+
 func (p *CreateNetworkParams) SetBypassvlanoverlapcheck(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -684,6 +738,27 @@ func (p *CreateNetworkParams) GetBypassvlanoverlapcheck() (bool, bool) {
 	return value, ok
 }
 
+func (p *CreateNetworkParams) SetCidrsize(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cidrsize"] = v
+}
+
+func (p *CreateNetworkParams) ResetCidrsize() {
+	if p.p != nil && p.p["cidrsize"] != nil {
+		delete(p.p, "cidrsize")
+	}
+}
+
+func (p *CreateNetworkParams) GetCidrsize() (int, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["cidrsize"].(int)
+	return value, ok
+}
+
 func (p *CreateNetworkParams) SetDisplaynetwork(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1433,8 +1508,11 @@ type CreateNetworkResponse struct {
 	Aclid                       string                         `json:"aclid"`
 	Aclname                     string                         `json:"aclname"`
 	Acltype                     string                         `json:"acltype"`
+	Asnumber                    int64                          `json:"asnumber"`
+	Asnumberid                  string                         `json:"asnumberid"`
 	Associatednetwork           string                         `json:"associatednetwork"`
 	Associatednetworkid         string                         `json:"associatednetworkid"`
+	Bgppeers                    []interface{}                  `json:"bgppeers"`
 	Broadcastdomaintype         string                         `json:"broadcastdomaintype"`
 	Broadcasturi                string                         `json:"broadcasturi"`
 	Canusefordeploy             bool                           `json:"canusefordeploy"`
@@ -1455,6 +1533,8 @@ type CreateNetworkResponse struct {
 	Icon                        interface{}                    `json:"icon"`
 	Id                          string                         `json:"id"`
 	Internetprotocol            string                         `json:"internetprotocol"`
+	Ip4routes                   []interface{}                  `json:"ip4routes"`
+	Ip4routing                  string                         `json:"ip4routing"`
 	Ip6cidr                     string                         `json:"ip6cidr"`
 	Ip6dns1                     string                         `json:"ip6dns1"`
 	Ip6dns2                     string                         `json:"ip6dns2"`
@@ -2075,6 +2155,7 @@ type CreateServiceInstanceResponse struct {
 	Displayname string `json:"displayname"`
 	Domain      string `json:"domain"`
 	Domainid    string `json:"domainid"`
+	Domainpath  string `json:"domainpath"`
 	Id          string `json:"id"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
@@ -2440,8 +2521,10 @@ type DedicatePublicIpRangeResponse struct {
 	Description       string `json:"description"`
 	Domain            string `json:"domain"`
 	Domainid          string `json:"domainid"`
+	Domainpath        string `json:"domainpath"`
 	Endip             string `json:"endip"`
 	Endipv6           string `json:"endipv6"`
+	Fornsx            bool   `json:"fornsx"`
 	Forsystemvms      bool   `json:"forsystemvms"`
 	Forvirtualnetwork bool   `json:"forvirtualnetwork"`
 	Gateway           string `json:"gateway"`
@@ -3087,8 +3170,11 @@ type NetscalerLoadBalancerNetwork struct {
 	Aclid                       string                                `json:"aclid"`
 	Aclname                     string                                `json:"aclname"`
 	Acltype                     string                                `json:"acltype"`
+	Asnumber                    int64                                 `json:"asnumber"`
+	Asnumberid                  string                                `json:"asnumberid"`
 	Associatednetwork           string                                `json:"associatednetwork"`
 	Associatednetworkid         string                                `json:"associatednetworkid"`
+	Bgppeers                    []interface{}                         `json:"bgppeers"`
 	Broadcastdomaintype         string                                `json:"broadcastdomaintype"`
 	Broadcasturi                string                                `json:"broadcasturi"`
 	Canusefordeploy             bool                                  `json:"canusefordeploy"`
@@ -3109,6 +3195,8 @@ type NetscalerLoadBalancerNetwork struct {
 	Icon                        interface{}                           `json:"icon"`
 	Id                          string                                `json:"id"`
 	Internetprotocol            string                                `json:"internetprotocol"`
+	Ip4routes                   []interface{}                         `json:"ip4routes"`
+	Ip4routing                  string                                `json:"ip4routing"`
 	Ip6cidr                     string                                `json:"ip6cidr"`
 	Ip6dns1                     string                                `json:"ip6dns1"`
 	Ip6dns2                     string                                `json:"ip6dns2"`
@@ -4375,8 +4463,11 @@ type Network struct {
 	Aclid                       string                   `json:"aclid"`
 	Aclname                     string                   `json:"aclname"`
 	Acltype                     string                   `json:"acltype"`
+	Asnumber                    int64                    `json:"asnumber"`
+	Asnumberid                  string                   `json:"asnumberid"`
 	Associatednetwork           string                   `json:"associatednetwork"`
 	Associatednetworkid         string                   `json:"associatednetworkid"`
+	Bgppeers                    []interface{}            `json:"bgppeers"`
 	Broadcastdomaintype         string                   `json:"broadcastdomaintype"`
 	Broadcasturi                string                   `json:"broadcasturi"`
 	Canusefordeploy             bool                     `json:"canusefordeploy"`
@@ -4397,6 +4488,8 @@ type Network struct {
 	Icon                        interface{}              `json:"icon"`
 	Id                          string                   `json:"id"`
 	Internetprotocol            string                   `json:"internetprotocol"`
+	Ip4routes                   []interface{}            `json:"ip4routes"`
+	Ip4routing                  string                   `json:"ip4routing"`
 	Ip6cidr                     string                   `json:"ip6cidr"`
 	Ip6dns1                     string                   `json:"ip6dns1"`
 	Ip6dns2                     string                   `json:"ip6dns2"`
@@ -4649,8 +4742,11 @@ type NiciraNvpDeviceNetwork struct {
 	Aclid                       string                          `json:"aclid"`
 	Aclname                     string                          `json:"aclname"`
 	Acltype                     string                          `json:"acltype"`
+	Asnumber                    int64                           `json:"asnumber"`
+	Asnumberid                  string                          `json:"asnumberid"`
 	Associatednetwork           string                          `json:"associatednetwork"`
 	Associatednetworkid         string                          `json:"associatednetworkid"`
+	Bgppeers                    []interface{}                   `json:"bgppeers"`
 	Broadcastdomaintype         string                          `json:"broadcastdomaintype"`
 	Broadcasturi                string                          `json:"broadcasturi"`
 	Canusefordeploy             bool                            `json:"canusefordeploy"`
@@ -4671,6 +4767,8 @@ type NiciraNvpDeviceNetwork struct {
 	Icon                        interface{}                     `json:"icon"`
 	Id                          string                          `json:"id"`
 	Internetprotocol            string                          `json:"internetprotocol"`
+	Ip4routes                   []interface{}                   `json:"ip4routes"`
+	Ip4routing                  string                          `json:"ip4routing"`
 	Ip6cidr                     string                          `json:"ip6cidr"`
 	Ip6dns1                     string                          `json:"ip6dns1"`
 	Ip6dns2                     string                          `json:"ip6dns2"`
@@ -5054,8 +5152,11 @@ type PaloAltoFirewallNetwork struct {
 	Aclid                       string                           `json:"aclid"`
 	Aclname                     string                           `json:"aclname"`
 	Acltype                     string                           `json:"acltype"`
+	Asnumber                    int64                            `json:"asnumber"`
+	Asnumberid                  string                           `json:"asnumberid"`
 	Associatednetwork           string                           `json:"associatednetwork"`
 	Associatednetworkid         string                           `json:"associatednetworkid"`
+	Bgppeers                    []interface{}                    `json:"bgppeers"`
 	Broadcastdomaintype         string                           `json:"broadcastdomaintype"`
 	Broadcasturi                string                           `json:"broadcasturi"`
 	Canusefordeploy             bool                             `json:"canusefordeploy"`
@@ -5076,6 +5177,8 @@ type PaloAltoFirewallNetwork struct {
 	Icon                        interface{}                      `json:"icon"`
 	Id                          string                           `json:"id"`
 	Internetprotocol            string                           `json:"internetprotocol"`
+	Ip4routes                   []interface{}                    `json:"ip4routes"`
+	Ip4routing                  string                           `json:"ip4routing"`
 	Ip6cidr                     string                           `json:"ip6cidr"`
 	Ip6dns1                     string                           `json:"ip6dns1"`
 	Ip6dns2                     string                           `json:"ip6dns2"`
@@ -6626,8 +6729,11 @@ type UpdateNetworkResponse struct {
 	Aclid                       string                         `json:"aclid"`
 	Aclname                     string                         `json:"aclname"`
 	Acltype                     string                         `json:"acltype"`
+	Asnumber                    int64                          `json:"asnumber"`
+	Asnumberid                  string                         `json:"asnumberid"`
 	Associatednetwork           string                         `json:"associatednetwork"`
 	Associatednetworkid         string                         `json:"associatednetworkid"`
+	Bgppeers                    []interface{}                  `json:"bgppeers"`
 	Broadcastdomaintype         string                         `json:"broadcastdomaintype"`
 	Broadcasturi                string                         `json:"broadcasturi"`
 	Canusefordeploy             bool                           `json:"canusefordeploy"`
@@ -6648,6 +6754,8 @@ type UpdateNetworkResponse struct {
 	Icon                        interface{}                    `json:"icon"`
 	Id                          string                         `json:"id"`
 	Internetprotocol            string                         `json:"internetprotocol"`
+	Ip4routes                   []interface{}                  `json:"ip4routes"`
+	Ip4routing                  string                         `json:"ip4routing"`
 	Ip6cidr                     string                         `json:"ip6cidr"`
 	Ip6dns1                     string                         `json:"ip6dns1"`
 	Ip6dns2                     string                         `json:"ip6dns2"`
diff --git a/cloudstack/NicService.go b/cloudstack/NicService.go
index 8147f71..23a48b3 100644
--- a/cloudstack/NicService.go
+++ b/cloudstack/NicService.go
@@ -604,6 +604,7 @@ type UpdateVmNicIpResponse struct {
 	Cpuspeed              int                                  `json:"cpuspeed"`
 	Cpuused               string                               `json:"cpuused"`
 	Created               string                               `json:"created"`
+	Deleteprotection      bool                                 `json:"deleteprotection"`
 	Details               map[string]string                    `json:"details"`
 	Diskioread            int64                                `json:"diskioread"`
 	Diskiowrite           int64                                `json:"diskiowrite"`
@@ -615,6 +616,7 @@ type UpdateVmNicIpResponse struct {
 	Displayvm             bool                                 `json:"displayvm"`
 	Domain                string                               `json:"domain"`
 	Domainid              string                               `json:"domainid"`
+	Domainpath            string                               `json:"domainpath"`
 	Forvirtualnetwork     bool                                 `json:"forvirtualnetwork"`
 	Group                 string                               `json:"group"`
 	Groupid               string                               `json:"groupid"`
@@ -628,6 +630,7 @@ type UpdateVmNicIpResponse struct {
 	Icon                  interface{}                          `json:"icon"`
 	Id                    string                               `json:"id"`
 	Instancename          string                               `json:"instancename"`
+	Ipaddress             string                               `json:"ipaddress"`
 	Isdynamicallyscalable bool                                 `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                               `json:"isodisplaytext"`
 	Isoid                 string                               `json:"isoid"`
@@ -665,6 +668,7 @@ type UpdateVmNicIpResponse struct {
 	State                 string                               `json:"state"`
 	Tags                  []Tags                               `json:"tags"`
 	Templatedisplaytext   string                               `json:"templatedisplaytext"`
+	Templateformat        string                               `json:"templateformat"`
 	Templateid            string                               `json:"templateid"`
 	Templatename          string                               `json:"templatename"`
 	Templatetype          string                               `json:"templatetype"`
@@ -676,6 +680,7 @@ type UpdateVmNicIpResponse struct {
 	Userid                string                               `json:"userid"`
 	Username              string                               `json:"username"`
 	Vgpu                  string                               `json:"vgpu"`
+	Vmtype                string                               `json:"vmtype"`
 	Vnfdetails            map[string]string                    `json:"vnfdetails"`
 	Vnfnics               []string                             `json:"vnfnics"`
 	Zoneid                string                               `json:"zoneid"`
@@ -687,6 +692,7 @@ type UpdateVmNicIpResponseSecuritygroup struct {
 	Description         string                                   `json:"description"`
 	Domain              string                                   `json:"domain"`
 	Domainid            string                                   `json:"domainid"`
+	Domainpath          string                                   `json:"domainpath"`
 	Egressrule          []UpdateVmNicIpResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                   `json:"id"`
 	Ingressrule         []UpdateVmNicIpResponseSecuritygroupRule `json:"ingressrule"`
@@ -712,16 +718,18 @@ type UpdateVmNicIpResponseSecuritygroupRule struct {
 }
 
 type UpdateVmNicIpResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *UpdateVmNicIpResponse) UnmarshalJSON(b []byte) error {
diff --git a/cloudstack/OvsElementService.go b/cloudstack/OvsElementService.go
index 88d9c27..335a175 100644
--- a/cloudstack/OvsElementService.go
+++ b/cloudstack/OvsElementService.go
@@ -142,16 +142,17 @@ func (s *OvsElementService) ConfigureOvsElement(p *ConfigureOvsElementParams) (*
 }
 
 type OvsElementResponse struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Enabled   bool   `json:"enabled"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Nspid     string `json:"nspid"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Enabled    bool   `json:"enabled"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Nspid      string `json:"nspid"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
 }
 
 type ListOvsElementsParams struct {
@@ -375,14 +376,15 @@ type ListOvsElementsResponse struct {
 }
 
 type OvsElement struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Enabled   bool   `json:"enabled"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Nspid     string `json:"nspid"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Enabled    bool   `json:"enabled"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Nspid      string `json:"nspid"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
 }
diff --git a/cloudstack/PodService.go b/cloudstack/PodService.go
index 34f70f8..104571c 100644
--- a/cloudstack/PodService.go
+++ b/cloudstack/PodService.go
@@ -294,6 +294,7 @@ type CreatePodResponseCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -1110,6 +1111,7 @@ type PodCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -1439,6 +1441,7 @@ type UpdatePodResponseCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
diff --git a/cloudstack/PoolService.go b/cloudstack/PoolService.go
index b2f7f1d..1f115ed 100644
--- a/cloudstack/PoolService.go
+++ b/cloudstack/PoolService.go
@@ -446,7 +446,9 @@ type CreateStoragePoolResponse struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -455,6 +457,7 @@ type CreateStoragePoolResponse struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
@@ -731,7 +734,9 @@ type FindStoragePoolsForMigrationResponse struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -740,6 +745,7 @@ type FindStoragePoolsForMigrationResponse struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
@@ -794,6 +800,10 @@ func (p *ListStoragePoolsParams) toURLValues() url.Values {
 	if v, found := p.p["status"]; found {
 		u.Set("status", v.(string))
 	}
+	if v, found := p.p["storagecustomstats"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("storagecustomstats", vv)
+	}
 	if v, found := p.p["zoneid"]; found {
 		u.Set("zoneid", v.(string))
 	}
@@ -1052,6 +1062,27 @@ func (p *ListStoragePoolsParams) GetStatus() (string, bool) {
 	return value, ok
 }
 
+func (p *ListStoragePoolsParams) SetStoragecustomstats(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["storagecustomstats"] = v
+}
+
+func (p *ListStoragePoolsParams) ResetStoragecustomstats() {
+	if p.p != nil && p.p["storagecustomstats"] != nil {
+		delete(p.p, "storagecustomstats")
+	}
+}
+
+func (p *ListStoragePoolsParams) GetStoragecustomstats() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["storagecustomstats"].(bool)
+	return value, ok
+}
+
 func (p *ListStoragePoolsParams) SetZoneid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1200,7 +1231,9 @@ type StoragePool struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -1209,6 +1242,7 @@ type StoragePool struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
@@ -1312,7 +1346,9 @@ type SyncStoragePoolResponse struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -1321,6 +1357,7 @@ type SyncStoragePoolResponse struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
@@ -1604,7 +1641,9 @@ type UpdateStoragePoolResponse struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -1613,6 +1652,7 @@ type UpdateStoragePoolResponse struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
diff --git a/cloudstack/ProjectService.go b/cloudstack/ProjectService.go
index c395376..373065e 100644
--- a/cloudstack/ProjectService.go
+++ b/cloudstack/ProjectService.go
@@ -182,6 +182,7 @@ type ActivateProjectResponse struct {
 	Snapshotlimit             string              `json:"snapshotlimit"`
 	Snapshottotal             int64               `json:"snapshottotal"`
 	State                     string              `json:"state"`
+	Taggedresources           []string            `json:"taggedresources"`
 	Tags                      []Tags              `json:"tags"`
 	Templateavailable         string              `json:"templateavailable"`
 	Templatelimit             string              `json:"templatelimit"`
@@ -791,6 +792,7 @@ type CreateProjectResponse struct {
 	Snapshotlimit             string              `json:"snapshotlimit"`
 	Snapshottotal             int64               `json:"snapshottotal"`
 	State                     string              `json:"state"`
+	Taggedresources           []string            `json:"taggedresources"`
 	Tags                      []Tags              `json:"tags"`
 	Templateavailable         string              `json:"templateavailable"`
 	Templatelimit             string              `json:"templatelimit"`
@@ -1578,17 +1580,18 @@ type ListProjectInvitationsResponse struct {
 }
 
 type ProjectInvitation struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Email     string `json:"email"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
-	State     string `json:"state"`
-	Userid    string `json:"userid"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Email      string `json:"email"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
+	State      string `json:"state"`
+	Userid     string `json:"userid"`
 }
 
 type ListProjectsParams struct {
@@ -2118,6 +2121,7 @@ type Project struct {
 	Snapshotlimit             string              `json:"snapshotlimit"`
 	Snapshottotal             int64               `json:"snapshottotal"`
 	State                     string              `json:"state"`
+	Taggedresources           []string            `json:"taggedresources"`
 	Tags                      []Tags              `json:"tags"`
 	Templateavailable         string              `json:"templateavailable"`
 	Templatelimit             string              `json:"templatelimit"`
@@ -2249,6 +2253,7 @@ type SuspendProjectResponse struct {
 	Snapshotlimit             string              `json:"snapshotlimit"`
 	Snapshottotal             int64               `json:"snapshottotal"`
 	State                     string              `json:"state"`
+	Taggedresources           []string            `json:"taggedresources"`
 	Tags                      []Tags              `json:"tags"`
 	Templateavailable         string              `json:"templateavailable"`
 	Templatelimit             string              `json:"templatelimit"`
@@ -2525,6 +2530,7 @@ type UpdateProjectResponse struct {
 	Snapshotlimit             string              `json:"snapshotlimit"`
 	Snapshottotal             int64               `json:"snapshottotal"`
 	State                     string              `json:"state"`
+	Taggedresources           []string            `json:"taggedresources"`
 	Tags                      []Tags              `json:"tags"`
 	Templateavailable         string              `json:"templateavailable"`
 	Templatelimit             string              `json:"templatelimit"`
diff --git a/cloudstack/ResourcemetadataService.go b/cloudstack/ResourcemetadataService.go
index 7be87ad..0e3262e 100644
--- a/cloudstack/ResourcemetadataService.go
+++ b/cloudstack/ResourcemetadataService.go
@@ -627,6 +627,7 @@ type ResourceDetail struct {
 	Customer     string `json:"customer"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	JobID        string `json:"jobid"`
 	Jobstatus    int    `json:"jobstatus"`
 	Key          string `json:"key"`
diff --git a/cloudstack/ResourcetagsService.go b/cloudstack/ResourcetagsService.go
index 51e2505..bd49f0b 100644
--- a/cloudstack/ResourcetagsService.go
+++ b/cloudstack/ResourcetagsService.go
@@ -857,6 +857,7 @@ type Tag struct {
 	Customer     string `json:"customer"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	JobID        string `json:"jobid"`
 	Jobstatus    int    `json:"jobstatus"`
 	Key          string `json:"key"`
diff --git a/cloudstack/RoleService.go b/cloudstack/RoleService.go
index d3d2cf2..e9704aa 100644
--- a/cloudstack/RoleService.go
+++ b/cloudstack/RoleService.go
@@ -219,6 +219,7 @@ type CreateRoleResponse struct {
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
+	State       string `json:"state"`
 	Type        string `json:"type"`
 }
 
@@ -753,6 +754,7 @@ type ImportRoleResponse struct {
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
+	State       string `json:"state"`
 	Type        string `json:"type"`
 }
 
@@ -857,6 +859,9 @@ func (p *ListRolesParams) toURLValues() url.Values {
 		vv := strconv.Itoa(v.(int))
 		u.Set("pagesize", vv)
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["type"]; found {
 		u.Set("type", v.(string))
 	}
@@ -968,6 +973,27 @@ func (p *ListRolesParams) GetPagesize() (int, bool) {
 	return value, ok
 }
 
+func (p *ListRolesParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
+func (p *ListRolesParams) ResetState() {
+	if p.p != nil && p.p["state"] != nil {
+		delete(p.p, "state")
+	}
+}
+
+func (p *ListRolesParams) GetState() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["state"].(string)
+	return value, ok
+}
+
 func (p *ListRolesParams) SetType(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1108,6 +1134,7 @@ type Role struct {
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
+	State       string `json:"state"`
 	Type        string `json:"type"`
 }
 
@@ -1279,6 +1306,7 @@ type UpdateRoleResponse struct {
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
 	Name        string `json:"name"`
+	State       string `json:"state"`
 	Type        string `json:"type"`
 }
 
diff --git a/cloudstack/RouterService.go b/cloudstack/RouterService.go
index 4a9162b..d964cf5 100644
--- a/cloudstack/RouterService.go
+++ b/cloudstack/RouterService.go
@@ -144,6 +144,7 @@ type ChangeServiceForRouterResponse struct {
 	Dns2                string                                             `json:"dns2"`
 	Domain              string                                             `json:"domain"`
 	Domainid            string                                             `json:"domainid"`
+	Domainpath          string                                             `json:"domainpath"`
 	Gateway             string                                             `json:"gateway"`
 	Guestipaddress      string                                             `json:"guestipaddress"`
 	Guestmacaddress     string                                             `json:"guestmacaddress"`
@@ -310,16 +311,17 @@ func (s *RouterService) ConfigureVirtualRouterElement(p *ConfigureVirtualRouterE
 }
 
 type VirtualRouterElementResponse struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Enabled   bool   `json:"enabled"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Nspid     string `json:"nspid"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Enabled    bool   `json:"enabled"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Nspid      string `json:"nspid"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
 }
 
 type CreateVirtualRouterElementParams struct {
@@ -427,16 +429,17 @@ func (s *RouterService) CreateVirtualRouterElement(p *CreateVirtualRouterElement
 }
 
 type CreateVirtualRouterElementResponse struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Enabled   bool   `json:"enabled"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Nspid     string `json:"nspid"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Enabled    bool   `json:"enabled"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Nspid      string `json:"nspid"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
 }
 
 type DestroyRouterParams struct {
@@ -526,6 +529,7 @@ type DestroyRouterResponse struct {
 	Dns2                string                                    `json:"dns2"`
 	Domain              string                                    `json:"domain"`
 	Domainid            string                                    `json:"domainid"`
+	Domainpath          string                                    `json:"domainpath"`
 	Gateway             string                                    `json:"gateway"`
 	Guestipaddress      string                                    `json:"guestipaddress"`
 	Guestmacaddress     string                                    `json:"guestmacaddress"`
@@ -1226,6 +1230,7 @@ type Router struct {
 	Dns2                string                     `json:"dns2"`
 	Domain              string                     `json:"domain"`
 	Domainid            string                     `json:"domainid"`
+	Domainpath          string                     `json:"domainpath"`
 	Gateway             string                     `json:"gateway"`
 	Guestipaddress      string                     `json:"guestipaddress"`
 	Guestmacaddress     string                     `json:"guestmacaddress"`
@@ -1506,16 +1511,17 @@ type ListVirtualRouterElementsResponse struct {
 }
 
 type VirtualRouterElement struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Enabled   bool   `json:"enabled"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Nspid     string `json:"nspid"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Enabled    bool   `json:"enabled"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Nspid      string `json:"nspid"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
 }
 
 type RebootRouterParams struct {
@@ -1630,6 +1636,7 @@ type RebootRouterResponse struct {
 	Dns2                string                                   `json:"dns2"`
 	Domain              string                                   `json:"domain"`
 	Domainid            string                                   `json:"domainid"`
+	Domainpath          string                                   `json:"domainpath"`
 	Gateway             string                                   `json:"gateway"`
 	Guestipaddress      string                                   `json:"guestipaddress"`
 	Guestmacaddress     string                                   `json:"guestmacaddress"`
@@ -1776,6 +1783,7 @@ type StartRouterResponse struct {
 	Dns2                string                                  `json:"dns2"`
 	Domain              string                                  `json:"domain"`
 	Domainid            string                                  `json:"domainid"`
+	Domainpath          string                                  `json:"domainpath"`
 	Gateway             string                                  `json:"gateway"`
 	Guestipaddress      string                                  `json:"guestipaddress"`
 	Guestmacaddress     string                                  `json:"guestmacaddress"`
@@ -1947,6 +1955,7 @@ type StopRouterResponse struct {
 	Dns2                string                                 `json:"dns2"`
 	Domain              string                                 `json:"domain"`
 	Domainid            string                                 `json:"domainid"`
+	Domainpath          string                                 `json:"domainpath"`
 	Gateway             string                                 `json:"gateway"`
 	Guestipaddress      string                                 `json:"guestipaddress"`
 	Guestmacaddress     string                                 `json:"guestmacaddress"`
diff --git a/cloudstack/SSHService.go b/cloudstack/SSHService.go
index 6d48625..253fb8f 100644
--- a/cloudstack/SSHService.go
+++ b/cloudstack/SSHService.go
@@ -1154,6 +1154,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	Cpuspeed              int                                                 `json:"cpuspeed"`
 	Cpuused               string                                              `json:"cpuused"`
 	Created               string                                              `json:"created"`
+	Deleteprotection      bool                                                `json:"deleteprotection"`
 	Details               map[string]string                                   `json:"details"`
 	Diskioread            int64                                               `json:"diskioread"`
 	Diskiowrite           int64                                               `json:"diskiowrite"`
@@ -1165,6 +1166,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	Displayvm             bool                                                `json:"displayvm"`
 	Domain                string                                              `json:"domain"`
 	Domainid              string                                              `json:"domainid"`
+	Domainpath            string                                              `json:"domainpath"`
 	Forvirtualnetwork     bool                                                `json:"forvirtualnetwork"`
 	Group                 string                                              `json:"group"`
 	Groupid               string                                              `json:"groupid"`
@@ -1178,6 +1180,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	Icon                  interface{}                                         `json:"icon"`
 	Id                    string                                              `json:"id"`
 	Instancename          string                                              `json:"instancename"`
+	Ipaddress             string                                              `json:"ipaddress"`
 	Isdynamicallyscalable bool                                                `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                              `json:"isodisplaytext"`
 	Isoid                 string                                              `json:"isoid"`
@@ -1215,6 +1218,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	State                 string                                              `json:"state"`
 	Tags                  []Tags                                              `json:"tags"`
 	Templatedisplaytext   string                                              `json:"templatedisplaytext"`
+	Templateformat        string                                              `json:"templateformat"`
 	Templateid            string                                              `json:"templateid"`
 	Templatename          string                                              `json:"templatename"`
 	Templatetype          string                                              `json:"templatetype"`
@@ -1226,6 +1230,7 @@ type ResetSSHKeyForVirtualMachineResponse struct {
 	Userid                string                                              `json:"userid"`
 	Username              string                                              `json:"username"`
 	Vgpu                  string                                              `json:"vgpu"`
+	Vmtype                string                                              `json:"vmtype"`
 	Vnfdetails            map[string]string                                   `json:"vnfdetails"`
 	Vnfnics               []string                                            `json:"vnfnics"`
 	Zoneid                string                                              `json:"zoneid"`
@@ -1237,6 +1242,7 @@ type ResetSSHKeyForVirtualMachineResponseSecuritygroup struct {
 	Description         string                                                  `json:"description"`
 	Domain              string                                                  `json:"domain"`
 	Domainid            string                                                  `json:"domainid"`
+	Domainpath          string                                                  `json:"domainpath"`
 	Egressrule          []ResetSSHKeyForVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                                  `json:"id"`
 	Ingressrule         []ResetSSHKeyForVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -1262,16 +1268,18 @@ type ResetSSHKeyForVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type ResetSSHKeyForVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *ResetSSHKeyForVirtualMachineResponse) UnmarshalJSON(b []byte) error {
diff --git a/cloudstack/SecurityGroupService.go b/cloudstack/SecurityGroupService.go
index ad30d5c..dcc09d0 100644
--- a/cloudstack/SecurityGroupService.go
+++ b/cloudstack/SecurityGroupService.go
@@ -988,6 +988,7 @@ type CreateSecurityGroupResponse struct {
 	Description         string                            `json:"description"`
 	Domain              string                            `json:"domain"`
 	Domainid            string                            `json:"domainid"`
+	Domainpath          string                            `json:"domainpath"`
 	Egressrule          []CreateSecurityGroupResponseRule `json:"egressrule"`
 	Id                  string                            `json:"id"`
 	Ingressrule         []CreateSecurityGroupResponseRule `json:"ingressrule"`
@@ -1627,6 +1628,7 @@ type SecurityGroup struct {
 	Description         string              `json:"description"`
 	Domain              string              `json:"domain"`
 	Domainid            string              `json:"domainid"`
+	Domainpath          string              `json:"domainpath"`
 	Egressrule          []SecurityGroupRule `json:"egressrule"`
 	Id                  string              `json:"id"`
 	Ingressrule         []SecurityGroupRule `json:"ingressrule"`
diff --git a/cloudstack/ServiceOfferingService.go b/cloudstack/ServiceOfferingService.go
index 33c06da..b6f5451 100644
--- a/cloudstack/ServiceOfferingService.go
+++ b/cloudstack/ServiceOfferingService.go
@@ -203,6 +203,10 @@ func (p *CreateServiceOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["provisioningtype"]; found {
 		u.Set("provisioningtype", v.(string))
 	}
+	if v, found := p.p["purgeresources"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("purgeresources", vv)
+	}
 	if v, found := p.p["rootdisksize"]; found {
 		vv := strconv.FormatInt(v.(int64), 10)
 		u.Set("rootdisksize", vv)
@@ -1073,6 +1077,27 @@ func (p *CreateServiceOfferingParams) GetProvisioningtype() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateServiceOfferingParams) SetPurgeresources(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["purgeresources"] = v
+}
+
+func (p *CreateServiceOfferingParams) ResetPurgeresources() {
+	if p.p != nil && p.p["purgeresources"] != nil {
+		delete(p.p, "purgeresources")
+	}
+}
+
+func (p *CreateServiceOfferingParams) GetPurgeresources() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["purgeresources"].(bool)
+	return value, ok
+}
+
 func (p *CreateServiceOfferingParams) SetRootdisksize(v int64) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1295,8 +1320,10 @@ type CreateServiceOfferingResponse struct {
 	Networkrate                 int               `json:"networkrate"`
 	Offerha                     bool              `json:"offerha"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	Purgeresources              bool              `json:"purgeresources"`
 	Rootdisksize                int64             `json:"rootdisksize"`
 	Serviceofferingdetails      map[string]string `json:"serviceofferingdetails"`
+	State                       string            `json:"state"`
 	Storagetags                 string            `json:"storagetags"`
 	Storagetype                 string            `json:"storagetype"`
 	Systemvmtype                string            `json:"systemvmtype"`
@@ -1462,12 +1489,18 @@ func (p *ListServiceOfferingsParams) toURLValues() url.Values {
 	if v, found := p.p["projectid"]; found {
 		u.Set("projectid", v.(string))
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["storagetype"]; found {
 		u.Set("storagetype", v.(string))
 	}
 	if v, found := p.p["systemvmtype"]; found {
 		u.Set("systemvmtype", v.(string))
 	}
+	if v, found := p.p["templateid"]; found {
+		u.Set("templateid", v.(string))
+	}
 	if v, found := p.p["virtualmachineid"]; found {
 		u.Set("virtualmachineid", v.(string))
 	}
@@ -1792,6 +1825,27 @@ func (p *ListServiceOfferingsParams) GetProjectid() (string, bool) {
 	return value, ok
 }
 
+func (p *ListServiceOfferingsParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
+func (p *ListServiceOfferingsParams) ResetState() {
+	if p.p != nil && p.p["state"] != nil {
+		delete(p.p, "state")
+	}
+}
+
+func (p *ListServiceOfferingsParams) GetState() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["state"].(string)
+	return value, ok
+}
+
 func (p *ListServiceOfferingsParams) SetStoragetype(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1834,6 +1888,27 @@ func (p *ListServiceOfferingsParams) GetSystemvmtype() (string, bool) {
 	return value, ok
 }
 
+func (p *ListServiceOfferingsParams) SetTemplateid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["templateid"] = v
+}
+
+func (p *ListServiceOfferingsParams) ResetTemplateid() {
+	if p.p != nil && p.p["templateid"] != nil {
+		delete(p.p, "templateid")
+	}
+}
+
+func (p *ListServiceOfferingsParams) GetTemplateid() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["templateid"].(string)
+	return value, ok
+}
+
 func (p *ListServiceOfferingsParams) SetVirtualmachineid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2033,8 +2108,10 @@ type ServiceOffering struct {
 	Networkrate                 int               `json:"networkrate"`
 	Offerha                     bool              `json:"offerha"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	Purgeresources              bool              `json:"purgeresources"`
 	Rootdisksize                int64             `json:"rootdisksize"`
 	Serviceofferingdetails      map[string]string `json:"serviceofferingdetails"`
+	State                       string            `json:"state"`
 	Storagetags                 string            `json:"storagetags"`
 	Storagetype                 string            `json:"storagetype"`
 	Systemvmtype                string            `json:"systemvmtype"`
@@ -2067,10 +2144,17 @@ func (p *UpdateServiceOfferingParams) toURLValues() url.Values {
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["purgeresources"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("purgeresources", vv)
+	}
 	if v, found := p.p["sortkey"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("sortkey", vv)
 	}
+	if v, found := p.p["state"]; found {
+		u.Set("state", v.(string))
+	}
 	if v, found := p.p["storagetags"]; found {
 		u.Set("storagetags", v.(string))
 	}
@@ -2185,6 +2269,27 @@ func (p *UpdateServiceOfferingParams) GetName() (string, bool) {
 	return value, ok
 }
 
+func (p *UpdateServiceOfferingParams) SetPurgeresources(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["purgeresources"] = v
+}
+
+func (p *UpdateServiceOfferingParams) ResetPurgeresources() {
+	if p.p != nil && p.p["purgeresources"] != nil {
+		delete(p.p, "purgeresources")
+	}
+}
+
+func (p *UpdateServiceOfferingParams) GetPurgeresources() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["purgeresources"].(bool)
+	return value, ok
+}
+
 func (p *UpdateServiceOfferingParams) SetSortkey(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2206,6 +2311,27 @@ func (p *UpdateServiceOfferingParams) GetSortkey() (int, bool) {
 	return value, ok
 }
 
+func (p *UpdateServiceOfferingParams) SetState(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["state"] = v
+}
+
+func (p *UpdateServiceOfferingParams) ResetState() {
+	if p.p != nil && p.p["state"] != nil {
+		delete(p.p, "state")
+	}
+}
+
+func (p *UpdateServiceOfferingParams) GetState() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["state"].(string)
+	return value, ok
+}
+
 func (p *UpdateServiceOfferingParams) SetStoragetags(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2322,8 +2448,10 @@ type UpdateServiceOfferingResponse struct {
 	Networkrate                 int               `json:"networkrate"`
 	Offerha                     bool              `json:"offerha"`
 	Provisioningtype            string            `json:"provisioningtype"`
+	Purgeresources              bool              `json:"purgeresources"`
 	Rootdisksize                int64             `json:"rootdisksize"`
 	Serviceofferingdetails      map[string]string `json:"serviceofferingdetails"`
+	State                       string            `json:"state"`
 	Storagetags                 string            `json:"storagetags"`
 	Storagetype                 string            `json:"storagetype"`
 	Systemvmtype                string            `json:"systemvmtype"`
diff --git a/cloudstack/SnapshotService.go b/cloudstack/SnapshotService.go
index c17334b..bc68403 100644
--- a/cloudstack/SnapshotService.go
+++ b/cloudstack/SnapshotService.go
@@ -371,6 +371,7 @@ type CreateSnapshotResponse struct {
 	Datastoretype   string            `json:"datastoretype"`
 	Domain          string            `json:"domain"`
 	Domainid        string            `json:"domainid"`
+	Domainpath      string            `json:"domainpath"`
 	Downloaddetails map[string]string `json:"downloaddetails"`
 	Hasannotations  bool              `json:"hasannotations"`
 	Id              string            `json:"id"`
@@ -392,6 +393,7 @@ type CreateSnapshotResponse struct {
 	Virtualsize     int64             `json:"virtualsize"`
 	Volumeid        string            `json:"volumeid"`
 	Volumename      string            `json:"volumename"`
+	Volumestate     string            `json:"volumestate"`
 	Volumetype      string            `json:"volumetype"`
 	Zoneid          string            `json:"zoneid"`
 	Zonename        string            `json:"zonename"`
@@ -864,6 +866,7 @@ type CreateVMSnapshotResponse struct {
 	Displayname        string `json:"displayname"`
 	Domain             string `json:"domain"`
 	Domainid           string `json:"domainid"`
+	Domainpath         string `json:"domainpath"`
 	Hasannotations     bool   `json:"hasannotations"`
 	Hypervisor         string `json:"hypervisor"`
 	Id                 string `json:"id"`
@@ -2046,6 +2049,7 @@ type Snapshot struct {
 	Datastoretype   string            `json:"datastoretype"`
 	Domain          string            `json:"domain"`
 	Domainid        string            `json:"domainid"`
+	Domainpath      string            `json:"domainpath"`
 	Downloaddetails map[string]string `json:"downloaddetails"`
 	Hasannotations  bool              `json:"hasannotations"`
 	Id              string            `json:"id"`
@@ -2067,6 +2071,7 @@ type Snapshot struct {
 	Virtualsize     int64             `json:"virtualsize"`
 	Volumeid        string            `json:"volumeid"`
 	Volumename      string            `json:"volumename"`
+	Volumestate     string            `json:"volumestate"`
 	Volumetype      string            `json:"volumetype"`
 	Zoneid          string            `json:"zoneid"`
 	Zonename        string            `json:"zonename"`
@@ -2528,6 +2533,7 @@ type VMSnapshot struct {
 	Displayname        string `json:"displayname"`
 	Domain             string `json:"domain"`
 	Domainid           string `json:"domainid"`
+	Domainpath         string `json:"domainpath"`
 	Hasannotations     bool   `json:"hasannotations"`
 	Hypervisor         string `json:"hypervisor"`
 	Id                 string `json:"id"`
@@ -2636,6 +2642,7 @@ type RevertSnapshotResponse struct {
 	Datastoretype   string            `json:"datastoretype"`
 	Domain          string            `json:"domain"`
 	Domainid        string            `json:"domainid"`
+	Domainpath      string            `json:"domainpath"`
 	Downloaddetails map[string]string `json:"downloaddetails"`
 	Hasannotations  bool              `json:"hasannotations"`
 	Id              string            `json:"id"`
@@ -2657,6 +2664,7 @@ type RevertSnapshotResponse struct {
 	Virtualsize     int64             `json:"virtualsize"`
 	Volumeid        string            `json:"volumeid"`
 	Volumename      string            `json:"volumename"`
+	Volumestate     string            `json:"volumestate"`
 	Volumetype      string            `json:"volumetype"`
 	Zoneid          string            `json:"zoneid"`
 	Zonename        string            `json:"zonename"`
@@ -2782,6 +2790,7 @@ type RevertToVMSnapshotResponse struct {
 	Cpuspeed              int                                       `json:"cpuspeed"`
 	Cpuused               string                                    `json:"cpuused"`
 	Created               string                                    `json:"created"`
+	Deleteprotection      bool                                      `json:"deleteprotection"`
 	Details               map[string]string                         `json:"details"`
 	Diskioread            int64                                     `json:"diskioread"`
 	Diskiowrite           int64                                     `json:"diskiowrite"`
@@ -2793,6 +2802,7 @@ type RevertToVMSnapshotResponse struct {
 	Displayvm             bool                                      `json:"displayvm"`
 	Domain                string                                    `json:"domain"`
 	Domainid              string                                    `json:"domainid"`
+	Domainpath            string                                    `json:"domainpath"`
 	Forvirtualnetwork     bool                                      `json:"forvirtualnetwork"`
 	Group                 string                                    `json:"group"`
 	Groupid               string                                    `json:"groupid"`
@@ -2806,6 +2816,7 @@ type RevertToVMSnapshotResponse struct {
 	Icon                  interface{}                               `json:"icon"`
 	Id                    string                                    `json:"id"`
 	Instancename          string                                    `json:"instancename"`
+	Ipaddress             string                                    `json:"ipaddress"`
 	Isdynamicallyscalable bool                                      `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                    `json:"isodisplaytext"`
 	Isoid                 string                                    `json:"isoid"`
@@ -2843,6 +2854,7 @@ type RevertToVMSnapshotResponse struct {
 	State                 string                                    `json:"state"`
 	Tags                  []Tags                                    `json:"tags"`
 	Templatedisplaytext   string                                    `json:"templatedisplaytext"`
+	Templateformat        string                                    `json:"templateformat"`
 	Templateid            string                                    `json:"templateid"`
 	Templatename          string                                    `json:"templatename"`
 	Templatetype          string                                    `json:"templatetype"`
@@ -2854,6 +2866,7 @@ type RevertToVMSnapshotResponse struct {
 	Userid                string                                    `json:"userid"`
 	Username              string                                    `json:"username"`
 	Vgpu                  string                                    `json:"vgpu"`
+	Vmtype                string                                    `json:"vmtype"`
 	Vnfdetails            map[string]string                         `json:"vnfdetails"`
 	Vnfnics               []string                                  `json:"vnfnics"`
 	Zoneid                string                                    `json:"zoneid"`
@@ -2865,6 +2878,7 @@ type RevertToVMSnapshotResponseSecuritygroup struct {
 	Description         string                                        `json:"description"`
 	Domain              string                                        `json:"domain"`
 	Domainid            string                                        `json:"domainid"`
+	Domainpath          string                                        `json:"domainpath"`
 	Egressrule          []RevertToVMSnapshotResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                        `json:"id"`
 	Ingressrule         []RevertToVMSnapshotResponseSecuritygroupRule `json:"ingressrule"`
@@ -2890,16 +2904,18 @@ type RevertToVMSnapshotResponseSecuritygroupRule struct {
 }
 
 type RevertToVMSnapshotResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *RevertToVMSnapshotResponse) UnmarshalJSON(b []byte) error {
diff --git a/cloudstack/StoragePoolService.go b/cloudstack/StoragePoolService.go
index dd44985..9623195 100644
--- a/cloudstack/StoragePoolService.go
+++ b/cloudstack/StoragePoolService.go
@@ -130,7 +130,9 @@ type CancelStorageMaintenanceResponse struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -139,6 +141,7 @@ type CancelStorageMaintenanceResponse struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
@@ -242,7 +245,9 @@ type EnableStorageMaintenanceResponse struct {
 	Istagarule           bool              `json:"istagarule"`
 	JobID                string            `json:"jobid"`
 	Jobstatus            int               `json:"jobstatus"`
+	Managed              bool              `json:"managed"`
 	Name                 string            `json:"name"`
+	Nfsmountopts         string            `json:"nfsmountopts"`
 	Overprovisionfactor  string            `json:"overprovisionfactor"`
 	Path                 string            `json:"path"`
 	Podid                string            `json:"podid"`
@@ -251,6 +256,7 @@ type EnableStorageMaintenanceResponse struct {
 	Scope                string            `json:"scope"`
 	State                string            `json:"state"`
 	Storagecapabilities  map[string]string `json:"storagecapabilities"`
+	Storagecustomstats   map[string]string `json:"storagecustomstats"`
 	Suitableformigration bool              `json:"suitableformigration"`
 	Tags                 string            `json:"tags"`
 	Type                 string            `json:"type"`
diff --git a/cloudstack/SystemCapacityService.go b/cloudstack/SystemCapacityService.go
index ac63ea3..1e815cf 100644
--- a/cloudstack/SystemCapacityService.go
+++ b/cloudstack/SystemCapacityService.go
@@ -63,6 +63,9 @@ func (p *ListCapacityParams) toURLValues() url.Values {
 	if v, found := p.p["sortby"]; found {
 		u.Set("sortby", v.(string))
 	}
+	if v, found := p.p["tag"]; found {
+		u.Set("tag", v.(string))
+	}
 	if v, found := p.p["type"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("type", vv)
@@ -220,6 +223,27 @@ func (p *ListCapacityParams) GetSortby() (string, bool) {
 	return value, ok
 }
 
+func (p *ListCapacityParams) SetTag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["tag"] = v
+}
+
+func (p *ListCapacityParams) ResetTag() {
+	if p.p != nil && p.p["tag"] != nil {
+		delete(p.p, "tag")
+	}
+}
+
+func (p *ListCapacityParams) GetTag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["tag"].(string)
+	return value, ok
+}
+
 func (p *ListCapacityParams) SetType(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -302,6 +326,7 @@ type Capacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
diff --git a/cloudstack/TemplateService.go b/cloudstack/TemplateService.go
index dd4edf2..bb3a9ae 100644
--- a/cloudstack/TemplateService.go
+++ b/cloudstack/TemplateService.go
@@ -219,6 +219,7 @@ func (s *TemplateService) CopyTemplate(p *CopyTemplateParams) (*CopyTemplateResp
 type CopyTemplateResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -232,6 +233,7 @@ type CopyTemplateResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -851,6 +853,7 @@ func (s *TemplateService) CreateTemplate(p *CreateTemplateParams) (*CreateTempla
 type CreateTemplateResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -864,6 +867,7 @@ type CreateTemplateResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -948,6 +952,10 @@ func (p *DeleteTemplateParams) toURLValues() url.Values {
 	if v, found := p.p["id"]; found {
 		u.Set("id", v.(string))
 	}
+	if v, found := p.p["issystem"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("issystem", vv)
+	}
 	if v, found := p.p["zoneid"]; found {
 		u.Set("zoneid", v.(string))
 	}
@@ -996,6 +1004,27 @@ func (p *DeleteTemplateParams) GetId() (string, bool) {
 	return value, ok
 }
 
+func (p *DeleteTemplateParams) SetIssystem(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["issystem"] = v
+}
+
+func (p *DeleteTemplateParams) ResetIssystem() {
+	if p.p != nil && p.p["issystem"] != nil {
+		delete(p.p, "issystem")
+	}
+}
+
+func (p *DeleteTemplateParams) GetIssystem() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["issystem"].(bool)
+	return value, ok
+}
+
 func (p *DeleteTemplateParams) SetZoneid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1247,6 +1276,9 @@ func (p *GetUploadParamsForTemplateParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["bits"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("bits", vv)
@@ -1347,6 +1379,27 @@ func (p *GetUploadParamsForTemplateParams) GetAccount() (string, bool) {
 	return value, ok
 }
 
+func (p *GetUploadParamsForTemplateParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *GetUploadParamsForTemplateParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *GetUploadParamsForTemplateParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *GetUploadParamsForTemplateParams) SetBits(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1949,6 +2002,9 @@ func (p *ListTemplatesParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["details"]; found {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("details", vv)
@@ -2056,6 +2112,27 @@ func (p *ListTemplatesParams) GetAccount() (string, bool) {
 	return value, ok
 }
 
+func (p *ListTemplatesParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *ListTemplatesParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *ListTemplatesParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *ListTemplatesParams) SetDetails(v []string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2657,6 +2734,7 @@ type ListTemplatesResponse struct {
 type Template struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -2670,6 +2748,7 @@ type Template struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -2850,6 +2929,7 @@ func (s *TemplateService) PrepareTemplate(p *PrepareTemplateParams) (*PrepareTem
 type PrepareTemplateResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -2863,6 +2943,7 @@ type PrepareTemplateResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -2943,6 +3024,9 @@ func (p *RegisterTemplateParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["bits"]; found {
 		vv := strconv.Itoa(v.(int))
 		u.Set("bits", vv)
@@ -3057,6 +3141,27 @@ func (p *RegisterTemplateParams) GetAccount() (string, bool) {
 	return value, ok
 }
 
+func (p *RegisterTemplateParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *RegisterTemplateParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *RegisterTemplateParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *RegisterTemplateParams) SetBits(v int) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -3618,6 +3723,7 @@ type RegisterTemplateResponse struct {
 type RegisterTemplate struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -3631,6 +3737,7 @@ type RegisterTemplate struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
@@ -3708,6 +3815,9 @@ func (p *UpdateTemplateParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["arch"]; found {
+		u.Set("arch", v.(string))
+	}
 	if v, found := p.p["bootable"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("bootable", vv)
@@ -3761,12 +3871,36 @@ func (p *UpdateTemplateParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("sshkeyenabled", vv)
 	}
+	if v, found := p.p["templatetag"]; found {
+		u.Set("templatetag", v.(string))
+	}
 	if v, found := p.p["templatetype"]; found {
 		u.Set("templatetype", v.(string))
 	}
 	return u
 }
 
+func (p *UpdateTemplateParams) SetArch(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["arch"] = v
+}
+
+func (p *UpdateTemplateParams) ResetArch() {
+	if p.p != nil && p.p["arch"] != nil {
+		delete(p.p, "arch")
+	}
+}
+
+func (p *UpdateTemplateParams) GetArch() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["arch"].(string)
+	return value, ok
+}
+
 func (p *UpdateTemplateParams) SetBootable(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -4061,6 +4195,27 @@ func (p *UpdateTemplateParams) GetSshkeyenabled() (bool, bool) {
 	return value, ok
 }
 
+func (p *UpdateTemplateParams) SetTemplatetag(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["templatetag"] = v
+}
+
+func (p *UpdateTemplateParams) ResetTemplatetag() {
+	if p.p != nil && p.p["templatetag"] != nil {
+		delete(p.p, "templatetag")
+	}
+}
+
+func (p *UpdateTemplateParams) GetTemplatetag() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["templatetag"].(string)
+	return value, ok
+}
+
 func (p *UpdateTemplateParams) SetTemplatetype(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -4109,6 +4264,7 @@ func (s *TemplateService) UpdateTemplate(p *UpdateTemplateParams) (*UpdateTempla
 type UpdateTemplateResponse struct {
 	Account               string              `json:"account"`
 	Accountid             string              `json:"accountid"`
+	Arch                  string              `json:"arch"`
 	Bits                  int                 `json:"bits"`
 	Bootable              bool                `json:"bootable"`
 	Checksum              string              `json:"checksum"`
@@ -4122,6 +4278,7 @@ type UpdateTemplateResponse struct {
 	Displaytext           string              `json:"displaytext"`
 	Domain                string              `json:"domain"`
 	Domainid              string              `json:"domainid"`
+	Domainpath            string              `json:"domainpath"`
 	Downloaddetails       []map[string]string `json:"downloaddetails"`
 	Format                string              `json:"format"`
 	Hasannotations        bool                `json:"hasannotations"`
diff --git a/cloudstack/UsageService.go b/cloudstack/UsageService.go
index 86c25a1..e8e7a6a 100644
--- a/cloudstack/UsageService.go
+++ b/cloudstack/UsageService.go
@@ -36,7 +36,7 @@ type UsageServiceIface interface {
 	DeleteTrafficType(p *DeleteTrafficTypeParams) (*DeleteTrafficTypeResponse, error)
 	NewDeleteTrafficTypeParams(id string) *DeleteTrafficTypeParams
 	GenerateUsageRecords(p *GenerateUsageRecordsParams) (*GenerateUsageRecordsResponse, error)
-	NewGenerateUsageRecordsParams(enddate string, startdate string) *GenerateUsageRecordsParams
+	NewGenerateUsageRecordsParams() *GenerateUsageRecordsParams
 	ListTrafficMonitors(p *ListTrafficMonitorsParams) (*ListTrafficMonitorsResponse, error)
 	NewListTrafficMonitorsParams(zoneid string) *ListTrafficMonitorsParams
 	ListTrafficTypeImplementors(p *ListTrafficTypeImplementorsParams) (*ListTrafficTypeImplementorsResponse, error)
@@ -747,11 +747,9 @@ func (p *GenerateUsageRecordsParams) GetStartdate() (string, bool) {
 
 // You should always use this function to get a new GenerateUsageRecordsParams instance,
 // as then you are sure you have configured all required params
-func (s *UsageService) NewGenerateUsageRecordsParams(enddate string, startdate string) *GenerateUsageRecordsParams {
+func (s *UsageService) NewGenerateUsageRecordsParams() *GenerateUsageRecordsParams {
 	p := &GenerateUsageRecordsParams{}
 	p.p = make(map[string]interface{})
-	p.p["enddate"] = enddate
-	p.p["startdate"] = startdate
 	return p
 }
 
@@ -1678,6 +1676,7 @@ type UsageRecord struct {
 	Description      string `json:"description"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	Enddate          string `json:"enddate"`
 	Hasannotations   bool   `json:"hasannotations"`
 	Isdefault        bool   `json:"isdefault"`
@@ -1779,9 +1778,10 @@ type ListUsageTypesResponse struct {
 
 type UsageType struct {
 	Description string `json:"description"`
+	Id          int    `json:"id"`
 	JobID       string `json:"jobid"`
 	Jobstatus   int    `json:"jobstatus"`
-	Usagetypeid int    `json:"usagetypeid"`
+	Name        string `json:"name"`
 }
 
 type RemoveRawUsageRecordsParams struct {
diff --git a/cloudstack/UsageService_mock.go b/cloudstack/UsageService_mock.go
index 9ff4854..8b17157 100644
--- a/cloudstack/UsageService_mock.go
+++ b/cloudstack/UsageService_mock.go
@@ -295,17 +295,17 @@ func (mr *MockUsageServiceIfaceMockRecorder) NewDeleteTrafficTypeParams(id inter
 }
 
 // NewGenerateUsageRecordsParams mocks base method.
-func (m *MockUsageServiceIface) NewGenerateUsageRecordsParams(enddate, startdate string) *GenerateUsageRecordsParams {
+func (m *MockUsageServiceIface) NewGenerateUsageRecordsParams() *GenerateUsageRecordsParams {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "NewGenerateUsageRecordsParams", enddate, startdate)
+	ret := m.ctrl.Call(m, "NewGenerateUsageRecordsParams")
 	ret0, _ := ret[0].(*GenerateUsageRecordsParams)
 	return ret0
 }
 
 // NewGenerateUsageRecordsParams indicates an expected call of NewGenerateUsageRecordsParams.
-func (mr *MockUsageServiceIfaceMockRecorder) NewGenerateUsageRecordsParams(enddate, startdate interface{}) *gomock.Call {
+func (mr *MockUsageServiceIfaceMockRecorder) NewGenerateUsageRecordsParams() *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewGenerateUsageRecordsParams", reflect.TypeOf((*MockUsageServiceIface)(nil).NewGenerateUsageRecordsParams), enddate, startdate)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewGenerateUsageRecordsParams", reflect.TypeOf((*MockUsageServiceIface)(nil).NewGenerateUsageRecordsParams))
 }
 
 // NewListTrafficMonitorsParams mocks base method.
diff --git a/cloudstack/VLANService.go b/cloudstack/VLANService.go
index 5f6ddd2..8439665 100644
--- a/cloudstack/VLANService.go
+++ b/cloudstack/VLANService.go
@@ -69,6 +69,10 @@ func (p *CreateVlanIpRangeParams) toURLValues() url.Values {
 	if v, found := p.p["endipv6"]; found {
 		u.Set("endipv6", v.(string))
 	}
+	if v, found := p.p["fornsx"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("fornsx", vv)
+	}
 	if v, found := p.p["forsystemvms"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("forsystemvms", vv)
@@ -200,6 +204,27 @@ func (p *CreateVlanIpRangeParams) GetEndipv6() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateVlanIpRangeParams) SetFornsx(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["fornsx"] = v
+}
+
+func (p *CreateVlanIpRangeParams) ResetFornsx() {
+	if p.p != nil && p.p["fornsx"] != nil {
+		delete(p.p, "fornsx")
+	}
+}
+
+func (p *CreateVlanIpRangeParams) GetFornsx() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["fornsx"].(bool)
+	return value, ok
+}
+
 func (p *CreateVlanIpRangeParams) SetForsystemvms(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -527,8 +552,10 @@ type CreateVlanIpRangeResponse struct {
 	Description       string `json:"description"`
 	Domain            string `json:"domain"`
 	Domainid          string `json:"domainid"`
+	Domainpath        string `json:"domainpath"`
 	Endip             string `json:"endip"`
 	Endipv6           string `json:"endipv6"`
+	Fornsx            bool   `json:"fornsx"`
 	Forsystemvms      bool   `json:"forsystemvms"`
 	Forvirtualnetwork bool   `json:"forvirtualnetwork"`
 	Gateway           string `json:"gateway"`
@@ -715,6 +742,7 @@ type DedicateGuestVlanRangeResponse struct {
 	Account           string `json:"account"`
 	Domain            string `json:"domain"`
 	Domainid          string `json:"domainid"`
+	Domainpath        string `json:"domainpath"`
 	Guestvlanrange    string `json:"guestvlanrange"`
 	Id                string `json:"id"`
 	JobID             string `json:"jobid"`
@@ -770,7 +798,7 @@ func (s *VLANService) NewDeleteVlanIpRangeParams(id string) *DeleteVlanIpRangePa
 	return p
 }
 
-// Creates a VLAN IP range.
+// Deletes a VLAN IP range.
 func (s *VLANService) DeleteVlanIpRange(p *DeleteVlanIpRangeParams) (*DeleteVlanIpRangeResponse, error) {
 	resp, err := s.cs.newRequest("deleteVlanIpRange", p.toURLValues())
 	if err != nil {
@@ -1138,6 +1166,7 @@ type DedicatedGuestVlanRange struct {
 	Account           string `json:"account"`
 	Domain            string `json:"domain"`
 	Domainid          string `json:"domainid"`
+	Domainpath        string `json:"domainpath"`
 	Guestvlanrange    string `json:"guestvlanrange"`
 	Id                string `json:"id"`
 	JobID             string `json:"jobid"`
@@ -1542,8 +1571,10 @@ type VlanIpRange struct {
 	Description       string `json:"description"`
 	Domain            string `json:"domain"`
 	Domainid          string `json:"domainid"`
+	Domainpath        string `json:"domainpath"`
 	Endip             string `json:"endip"`
 	Endipv6           string `json:"endipv6"`
+	Fornsx            bool   `json:"fornsx"`
 	Forsystemvms      bool   `json:"forsystemvms"`
 	Forvirtualnetwork bool   `json:"forvirtualnetwork"`
 	Gateway           string `json:"gateway"`
@@ -1888,6 +1919,7 @@ type GuestVlan struct {
 	Allocationstate     string     `json:"allocationstate"`
 	Domain              string     `json:"domain"`
 	Domainid            string     `json:"domainid"`
+	Domainpath          string     `json:"domainpath"`
 	Id                  int64      `json:"id"`
 	Isdedicated         bool       `json:"isdedicated"`
 	JobID               string     `json:"jobid"`
@@ -2190,8 +2222,10 @@ type UpdateVlanIpRangeResponse struct {
 	Description       string `json:"description"`
 	Domain            string `json:"domain"`
 	Domainid          string `json:"domainid"`
+	Domainpath        string `json:"domainpath"`
 	Endip             string `json:"endip"`
 	Endipv6           string `json:"endipv6"`
+	Fornsx            bool   `json:"fornsx"`
 	Forsystemvms      bool   `json:"forsystemvms"`
 	Forvirtualnetwork bool   `json:"forvirtualnetwork"`
 	Gateway           string `json:"gateway"`
diff --git a/cloudstack/VMGroupService.go b/cloudstack/VMGroupService.go
index 9b4b84a..b2d89f8 100644
--- a/cloudstack/VMGroupService.go
+++ b/cloudstack/VMGroupService.go
@@ -178,6 +178,7 @@ type CreateInstanceGroupResponse struct {
 	Created        string `json:"created"`
 	Domain         string `json:"domain"`
 	Domainid       string `json:"domainid"`
+	Domainpath     string `json:"domainpath"`
 	Hasannotations bool   `json:"hasannotations"`
 	Id             string `json:"id"`
 	JobID          string `json:"jobid"`
@@ -653,6 +654,7 @@ type InstanceGroup struct {
 	Created        string `json:"created"`
 	Domain         string `json:"domain"`
 	Domainid       string `json:"domainid"`
+	Domainpath     string `json:"domainpath"`
 	Hasannotations bool   `json:"hasannotations"`
 	Id             string `json:"id"`
 	JobID          string `json:"jobid"`
@@ -751,6 +753,7 @@ type UpdateInstanceGroupResponse struct {
 	Created        string `json:"created"`
 	Domain         string `json:"domain"`
 	Domainid       string `json:"domainid"`
+	Domainpath     string `json:"domainpath"`
 	Hasannotations bool   `json:"hasannotations"`
 	Id             string `json:"id"`
 	JobID          string `json:"jobid"`
diff --git a/cloudstack/VPCService.go b/cloudstack/VPCService.go
index 857c44c..7af0093 100644
--- a/cloudstack/VPCService.go
+++ b/cloudstack/VPCService.go
@@ -33,9 +33,9 @@ type VPCServiceIface interface {
 	CreateStaticRoute(p *CreateStaticRouteParams) (*CreateStaticRouteResponse, error)
 	NewCreateStaticRouteParams(cidr string, gatewayid string) *CreateStaticRouteParams
 	CreateVPC(p *CreateVPCParams) (*CreateVPCResponse, error)
-	NewCreateVPCParams(cidr string, displaytext string, name string, vpcofferingid string, zoneid string) *CreateVPCParams
+	NewCreateVPCParams(displaytext string, name string, vpcofferingid string, zoneid string) *CreateVPCParams
 	CreateVPCOffering(p *CreateVPCOfferingParams) (*CreateVPCOfferingResponse, error)
-	NewCreateVPCOfferingParams(displaytext string, name string, supportedservices []string) *CreateVPCOfferingParams
+	NewCreateVPCOfferingParams(displaytext string, name string) *CreateVPCOfferingParams
 	DeletePrivateGateway(p *DeletePrivateGatewayParams) (*DeletePrivateGatewayResponse, error)
 	NewDeletePrivateGatewayParams(id string) *DeletePrivateGatewayParams
 	DeleteStaticRoute(p *DeleteStaticRouteParams) (*DeleteStaticRouteResponse, error)
@@ -401,6 +401,7 @@ type CreatePrivateGatewayResponse struct {
 	Associatednetworkid string `json:"associatednetworkid"`
 	Domain              string `json:"domain"`
 	Domainid            string `json:"domainid"`
+	Domainpath          string `json:"domainpath"`
 	Gateway             string `json:"gateway"`
 	Hasannotations      bool   `json:"hasannotations"`
 	Id                  string `json:"id"`
@@ -526,19 +527,20 @@ func (s *VPCService) CreateStaticRoute(p *CreateStaticRouteParams) (*CreateStati
 }
 
 type CreateStaticRouteResponse struct {
-	Account   string `json:"account"`
-	Cidr      string `json:"cidr"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Gatewayid string `json:"gatewayid"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
-	State     string `json:"state"`
-	Tags      []Tags `json:"tags"`
-	Vpcid     string `json:"vpcid"`
+	Account    string `json:"account"`
+	Cidr       string `json:"cidr"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Gatewayid  string `json:"gatewayid"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
+	State      string `json:"state"`
+	Tags       []Tags `json:"tags"`
+	Vpcid      string `json:"vpcid"`
 }
 
 type CreateVPCParams struct {
@@ -553,9 +555,21 @@ func (p *CreateVPCParams) toURLValues() url.Values {
 	if v, found := p.p["account"]; found {
 		u.Set("account", v.(string))
 	}
+	if v, found := p.p["asnumber"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("asnumber", vv)
+	}
+	if v, found := p.p["bgppeerids"]; found {
+		vv := strings.Join(v.([]string), ",")
+		u.Set("bgppeerids", vv)
+	}
 	if v, found := p.p["cidr"]; found {
 		u.Set("cidr", v.(string))
 	}
+	if v, found := p.p["cidrsize"]; found {
+		vv := strconv.Itoa(v.(int))
+		u.Set("cidrsize", vv)
+	}
 	if v, found := p.p["displaytext"]; found {
 		u.Set("displaytext", v.(string))
 	}
@@ -628,6 +642,48 @@ func (p *CreateVPCParams) GetAccount() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateVPCParams) SetAsnumber(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["asnumber"] = v
+}
+
+func (p *CreateVPCParams) ResetAsnumber() {
+	if p.p != nil && p.p["asnumber"] != nil {
+		delete(p.p, "asnumber")
+	}
+}
+
+func (p *CreateVPCParams) GetAsnumber() (int64, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["asnumber"].(int64)
+	return value, ok
+}
+
+func (p *CreateVPCParams) SetBgppeerids(v []string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["bgppeerids"] = v
+}
+
+func (p *CreateVPCParams) ResetBgppeerids() {
+	if p.p != nil && p.p["bgppeerids"] != nil {
+		delete(p.p, "bgppeerids")
+	}
+}
+
+func (p *CreateVPCParams) GetBgppeerids() ([]string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["bgppeerids"].([]string)
+	return value, ok
+}
+
 func (p *CreateVPCParams) SetCidr(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -649,6 +705,27 @@ func (p *CreateVPCParams) GetCidr() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateVPCParams) SetCidrsize(v int) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["cidrsize"] = v
+}
+
+func (p *CreateVPCParams) ResetCidrsize() {
+	if p.p != nil && p.p["cidrsize"] != nil {
+		delete(p.p, "cidrsize")
+	}
+}
+
+func (p *CreateVPCParams) GetCidrsize() (int, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["cidrsize"].(int)
+	return value, ok
+}
+
 func (p *CreateVPCParams) SetDisplaytext(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -966,10 +1043,9 @@ func (p *CreateVPCParams) GetZoneid() (string, bool) {
 
 // You should always use this function to get a new CreateVPCParams instance,
 // as then you are sure you have configured all required params
-func (s *VPCService) NewCreateVPCParams(cidr string, displaytext string, name string, vpcofferingid string, zoneid string) *CreateVPCParams {
+func (s *VPCService) NewCreateVPCParams(displaytext string, name string, vpcofferingid string, zoneid string) *CreateVPCParams {
 	p := &CreateVPCParams{}
 	p.p = make(map[string]interface{})
-	p.p["cidr"] = cidr
 	p.p["displaytext"] = displaytext
 	p.p["name"] = name
 	p.p["vpcofferingid"] = vpcofferingid
@@ -1014,6 +1090,9 @@ func (s *VPCService) CreateVPC(p *CreateVPCParams) (*CreateVPCResponse, error) {
 
 type CreateVPCResponse struct {
 	Account              string                     `json:"account"`
+	Asnumber             int64                      `json:"asnumber"`
+	Asnumberid           string                     `json:"asnumberid"`
+	Bgppeers             []interface{}              `json:"bgppeers"`
 	Cidr                 string                     `json:"cidr"`
 	Created              string                     `json:"created"`
 	Displaytext          string                     `json:"displaytext"`
@@ -1022,10 +1101,13 @@ type CreateVPCResponse struct {
 	Dns2                 string                     `json:"dns2"`
 	Domain               string                     `json:"domain"`
 	Domainid             string                     `json:"domainid"`
+	Domainpath           string                     `json:"domainpath"`
 	Fordisplay           bool                       `json:"fordisplay"`
 	Hasannotations       bool                       `json:"hasannotations"`
 	Icon                 interface{}                `json:"icon"`
 	Id                   string                     `json:"id"`
+	Ip4routes            []interface{}              `json:"ip4routes"`
+	Ip4routing           string                     `json:"ip4routing"`
 	Ip6dns1              string                     `json:"ip6dns1"`
 	Ip6dns2              string                     `json:"ip6dns2"`
 	Ip6routes            []interface{}              `json:"ip6routes"`
@@ -1091,12 +1173,26 @@ func (p *CreateVPCOfferingParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("enable", vv)
 	}
+	if v, found := p.p["fornsx"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("fornsx", vv)
+	}
 	if v, found := p.p["internetprotocol"]; found {
 		u.Set("internetprotocol", v.(string))
 	}
 	if v, found := p.p["name"]; found {
 		u.Set("name", v.(string))
 	}
+	if v, found := p.p["networkmode"]; found {
+		u.Set("networkmode", v.(string))
+	}
+	if v, found := p.p["nsxsupportlb"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("nsxsupportlb", vv)
+	}
+	if v, found := p.p["routingmode"]; found {
+		u.Set("routingmode", v.(string))
+	}
 	if v, found := p.p["servicecapabilitylist"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -1114,6 +1210,10 @@ func (p *CreateVPCOfferingParams) toURLValues() url.Values {
 			u.Set(fmt.Sprintf("serviceproviderlist[%d].provider", i), m[k])
 		}
 	}
+	if v, found := p.p["specifyasnumber"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("specifyasnumber", vv)
+	}
 	if v, found := p.p["supportedservices"]; found {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("supportedservices", vv)
@@ -1188,6 +1288,27 @@ func (p *CreateVPCOfferingParams) GetEnable() (bool, bool) {
 	return value, ok
 }
 
+func (p *CreateVPCOfferingParams) SetFornsx(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["fornsx"] = v
+}
+
+func (p *CreateVPCOfferingParams) ResetFornsx() {
+	if p.p != nil && p.p["fornsx"] != nil {
+		delete(p.p, "fornsx")
+	}
+}
+
+func (p *CreateVPCOfferingParams) GetFornsx() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["fornsx"].(bool)
+	return value, ok
+}
+
 func (p *CreateVPCOfferingParams) SetInternetprotocol(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1230,6 +1351,69 @@ func (p *CreateVPCOfferingParams) GetName() (string, bool) {
 	return value, ok
 }
 
+func (p *CreateVPCOfferingParams) SetNetworkmode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["networkmode"] = v
+}
+
+func (p *CreateVPCOfferingParams) ResetNetworkmode() {
+	if p.p != nil && p.p["networkmode"] != nil {
+		delete(p.p, "networkmode")
+	}
+}
+
+func (p *CreateVPCOfferingParams) GetNetworkmode() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["networkmode"].(string)
+	return value, ok
+}
+
+func (p *CreateVPCOfferingParams) SetNsxsupportlb(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["nsxsupportlb"] = v
+}
+
+func (p *CreateVPCOfferingParams) ResetNsxsupportlb() {
+	if p.p != nil && p.p["nsxsupportlb"] != nil {
+		delete(p.p, "nsxsupportlb")
+	}
+}
+
+func (p *CreateVPCOfferingParams) GetNsxsupportlb() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["nsxsupportlb"].(bool)
+	return value, ok
+}
+
+func (p *CreateVPCOfferingParams) SetRoutingmode(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["routingmode"] = v
+}
+
+func (p *CreateVPCOfferingParams) ResetRoutingmode() {
+	if p.p != nil && p.p["routingmode"] != nil {
+		delete(p.p, "routingmode")
+	}
+}
+
+func (p *CreateVPCOfferingParams) GetRoutingmode() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["routingmode"].(string)
+	return value, ok
+}
+
 func (p *CreateVPCOfferingParams) SetServicecapabilitylist(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1293,6 +1477,27 @@ func (p *CreateVPCOfferingParams) GetServiceproviderlist() (map[string]string, b
 	return value, ok
 }
 
+func (p *CreateVPCOfferingParams) SetSpecifyasnumber(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["specifyasnumber"] = v
+}
+
+func (p *CreateVPCOfferingParams) ResetSpecifyasnumber() {
+	if p.p != nil && p.p["specifyasnumber"] != nil {
+		delete(p.p, "specifyasnumber")
+	}
+}
+
+func (p *CreateVPCOfferingParams) GetSpecifyasnumber() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["specifyasnumber"].(bool)
+	return value, ok
+}
+
 func (p *CreateVPCOfferingParams) SetSupportedservices(v []string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -1337,12 +1542,11 @@ func (p *CreateVPCOfferingParams) GetZoneid() ([]string, bool) {
 
 // You should always use this function to get a new CreateVPCOfferingParams instance,
 // as then you are sure you have configured all required params
-func (s *VPCService) NewCreateVPCOfferingParams(displaytext string, name string, supportedservices []string) *CreateVPCOfferingParams {
+func (s *VPCService) NewCreateVPCOfferingParams(displaytext string, name string) *CreateVPCOfferingParams {
 	p := &CreateVPCOfferingParams{}
 	p.p = make(map[string]interface{})
 	p.p["displaytext"] = displaytext
 	p.p["name"] = name
-	p.p["supportedservices"] = supportedservices
 	return p
 }
 
@@ -1387,13 +1591,17 @@ type CreateVPCOfferingResponse struct {
 	Distributedvpcrouter   bool                               `json:"distributedvpcrouter"`
 	Domain                 string                             `json:"domain"`
 	Domainid               string                             `json:"domainid"`
+	Fornsx                 bool                               `json:"fornsx"`
 	Id                     string                             `json:"id"`
 	Internetprotocol       string                             `json:"internetprotocol"`
 	Isdefault              bool                               `json:"isdefault"`
 	JobID                  string                             `json:"jobid"`
 	Jobstatus              int                                `json:"jobstatus"`
 	Name                   string                             `json:"name"`
+	Networkmode            string                             `json:"networkmode"`
+	Routingmode            string                             `json:"routingmode"`
 	Service                []CreateVPCOfferingResponseService `json:"service"`
+	Specifyasnumber        bool                               `json:"specifyasnumber"`
 	State                  string                             `json:"state"`
 	SupportsregionLevelvpc bool                               `json:"supportsregionLevelvpc"`
 	Zone                   string                             `json:"zone"`
@@ -2147,6 +2355,7 @@ type PrivateGateway struct {
 	Associatednetworkid string `json:"associatednetworkid"`
 	Domain              string `json:"domain"`
 	Domainid            string `json:"domainid"`
+	Domainpath          string `json:"domainpath"`
 	Gateway             string `json:"gateway"`
 	Hasannotations      bool   `json:"hasannotations"`
 	Id                  string `json:"id"`
@@ -2560,19 +2769,20 @@ type ListStaticRoutesResponse struct {
 }
 
 type StaticRoute struct {
-	Account   string `json:"account"`
-	Cidr      string `json:"cidr"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Gatewayid string `json:"gatewayid"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
-	State     string `json:"state"`
-	Tags      []Tags `json:"tags"`
-	Vpcid     string `json:"vpcid"`
+	Account    string `json:"account"`
+	Cidr       string `json:"cidr"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Gatewayid  string `json:"gatewayid"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
+	State      string `json:"state"`
+	Tags       []Tags `json:"tags"`
+	Vpcid      string `json:"vpcid"`
 }
 
 type ListVPCOfferingsParams struct {
@@ -2972,13 +3182,17 @@ type VPCOffering struct {
 	Distributedvpcrouter   bool                 `json:"distributedvpcrouter"`
 	Domain                 string               `json:"domain"`
 	Domainid               string               `json:"domainid"`
+	Fornsx                 bool                 `json:"fornsx"`
 	Id                     string               `json:"id"`
 	Internetprotocol       string               `json:"internetprotocol"`
 	Isdefault              bool                 `json:"isdefault"`
 	JobID                  string               `json:"jobid"`
 	Jobstatus              int                  `json:"jobstatus"`
 	Name                   string               `json:"name"`
+	Networkmode            string               `json:"networkmode"`
+	Routingmode            string               `json:"routingmode"`
 	Service                []VPCOfferingService `json:"service"`
+	Specifyasnumber        bool                 `json:"specifyasnumber"`
 	State                  string               `json:"state"`
 	SupportsregionLevelvpc bool                 `json:"supportsregionLevelvpc"`
 	Zone                   string               `json:"zone"`
@@ -3624,6 +3838,9 @@ type ListVPCsResponse struct {
 
 type VPC struct {
 	Account              string               `json:"account"`
+	Asnumber             int64                `json:"asnumber"`
+	Asnumberid           string               `json:"asnumberid"`
+	Bgppeers             []interface{}        `json:"bgppeers"`
 	Cidr                 string               `json:"cidr"`
 	Created              string               `json:"created"`
 	Displaytext          string               `json:"displaytext"`
@@ -3632,10 +3849,13 @@ type VPC struct {
 	Dns2                 string               `json:"dns2"`
 	Domain               string               `json:"domain"`
 	Domainid             string               `json:"domainid"`
+	Domainpath           string               `json:"domainpath"`
 	Fordisplay           bool                 `json:"fordisplay"`
 	Hasannotations       bool                 `json:"hasannotations"`
 	Icon                 interface{}          `json:"icon"`
 	Id                   string               `json:"id"`
+	Ip4routes            []interface{}        `json:"ip4routes"`
+	Ip4routing           string               `json:"ip4routing"`
 	Ip6dns1              string               `json:"ip6dns1"`
 	Ip6dns2              string               `json:"ip6dns2"`
 	Ip6routes            []interface{}        `json:"ip6routes"`
@@ -4066,6 +4286,9 @@ func (s *VPCService) UpdateVPC(p *UpdateVPCParams) (*UpdateVPCResponse, error) {
 
 type UpdateVPCResponse struct {
 	Account              string                     `json:"account"`
+	Asnumber             int64                      `json:"asnumber"`
+	Asnumberid           string                     `json:"asnumberid"`
+	Bgppeers             []interface{}              `json:"bgppeers"`
 	Cidr                 string                     `json:"cidr"`
 	Created              string                     `json:"created"`
 	Displaytext          string                     `json:"displaytext"`
@@ -4074,10 +4297,13 @@ type UpdateVPCResponse struct {
 	Dns2                 string                     `json:"dns2"`
 	Domain               string                     `json:"domain"`
 	Domainid             string                     `json:"domainid"`
+	Domainpath           string                     `json:"domainpath"`
 	Fordisplay           bool                       `json:"fordisplay"`
 	Hasannotations       bool                       `json:"hasannotations"`
 	Icon                 interface{}                `json:"icon"`
 	Id                   string                     `json:"id"`
+	Ip4routes            []interface{}              `json:"ip4routes"`
+	Ip4routing           string                     `json:"ip4routing"`
 	Ip6dns1              string                     `json:"ip6dns1"`
 	Ip6dns2              string                     `json:"ip6dns2"`
 	Ip6routes            []interface{}              `json:"ip6routes"`
@@ -4354,13 +4580,17 @@ type UpdateVPCOfferingResponse struct {
 	Distributedvpcrouter   bool                               `json:"distributedvpcrouter"`
 	Domain                 string                             `json:"domain"`
 	Domainid               string                             `json:"domainid"`
+	Fornsx                 bool                               `json:"fornsx"`
 	Id                     string                             `json:"id"`
 	Internetprotocol       string                             `json:"internetprotocol"`
 	Isdefault              bool                               `json:"isdefault"`
 	JobID                  string                             `json:"jobid"`
 	Jobstatus              int                                `json:"jobstatus"`
 	Name                   string                             `json:"name"`
+	Networkmode            string                             `json:"networkmode"`
+	Routingmode            string                             `json:"routingmode"`
 	Service                []UpdateVPCOfferingResponseService `json:"service"`
+	Specifyasnumber        bool                               `json:"specifyasnumber"`
 	State                  string                             `json:"state"`
 	SupportsregionLevelvpc bool                               `json:"supportsregionLevelvpc"`
 	Zone                   string                             `json:"zone"`
diff --git a/cloudstack/VPCService_mock.go b/cloudstack/VPCService_mock.go
index 33dde55..567d26d 100644
--- a/cloudstack/VPCService_mock.go
+++ b/cloudstack/VPCService_mock.go
@@ -429,31 +429,31 @@ func (mr *MockVPCServiceIfaceMockRecorder) NewCreateStaticRouteParams(cidr, gate
 }
 
 // NewCreateVPCOfferingParams mocks base method.
-func (m *MockVPCServiceIface) NewCreateVPCOfferingParams(displaytext, name string, supportedservices []string) *CreateVPCOfferingParams {
+func (m *MockVPCServiceIface) NewCreateVPCOfferingParams(displaytext, name string) *CreateVPCOfferingParams {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "NewCreateVPCOfferingParams", displaytext, name, supportedservices)
+	ret := m.ctrl.Call(m, "NewCreateVPCOfferingParams", displaytext, name)
 	ret0, _ := ret[0].(*CreateVPCOfferingParams)
 	return ret0
 }
 
 // NewCreateVPCOfferingParams indicates an expected call of NewCreateVPCOfferingParams.
-func (mr *MockVPCServiceIfaceMockRecorder) NewCreateVPCOfferingParams(displaytext, name, supportedservices interface{}) *gomock.Call {
+func (mr *MockVPCServiceIfaceMockRecorder) NewCreateVPCOfferingParams(displaytext, name interface{}) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewCreateVPCOfferingParams", reflect.TypeOf((*MockVPCServiceIface)(nil).NewCreateVPCOfferingParams), displaytext, name, supportedservices)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewCreateVPCOfferingParams", reflect.TypeOf((*MockVPCServiceIface)(nil).NewCreateVPCOfferingParams), displaytext, name)
 }
 
 // NewCreateVPCParams mocks base method.
-func (m *MockVPCServiceIface) NewCreateVPCParams(cidr, displaytext, name, vpcofferingid, zoneid string) *CreateVPCParams {
+func (m *MockVPCServiceIface) NewCreateVPCParams(displaytext, name, vpcofferingid, zoneid string) *CreateVPCParams {
 	m.ctrl.T.Helper()
-	ret := m.ctrl.Call(m, "NewCreateVPCParams", cidr, displaytext, name, vpcofferingid, zoneid)
+	ret := m.ctrl.Call(m, "NewCreateVPCParams", displaytext, name, vpcofferingid, zoneid)
 	ret0, _ := ret[0].(*CreateVPCParams)
 	return ret0
 }
 
 // NewCreateVPCParams indicates an expected call of NewCreateVPCParams.
-func (mr *MockVPCServiceIfaceMockRecorder) NewCreateVPCParams(cidr, displaytext, name, vpcofferingid, zoneid interface{}) *gomock.Call {
+func (mr *MockVPCServiceIfaceMockRecorder) NewCreateVPCParams(displaytext, name, vpcofferingid, zoneid interface{}) *gomock.Call {
 	mr.mock.ctrl.T.Helper()
-	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewCreateVPCParams", reflect.TypeOf((*MockVPCServiceIface)(nil).NewCreateVPCParams), cidr, displaytext, name, vpcofferingid, zoneid)
+	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewCreateVPCParams", reflect.TypeOf((*MockVPCServiceIface)(nil).NewCreateVPCParams), displaytext, name, vpcofferingid, zoneid)
 }
 
 // NewDeletePrivateGatewayParams mocks base method.
diff --git a/cloudstack/VPNService.go b/cloudstack/VPNService.go
index 0ec325c..fbbebc2 100644
--- a/cloudstack/VPNService.go
+++ b/cloudstack/VPNService.go
@@ -255,16 +255,17 @@ func (s *VPNService) AddVpnUser(p *AddVpnUserParams) (*AddVpnUserResponse, error
 }
 
 type AddVpnUserResponse struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
-	State     string `json:"state"`
-	Username  string `json:"username"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
+	State      string `json:"state"`
+	Username   string `json:"username"`
 }
 
 type CreateRemoteAccessVpnParams struct {
@@ -473,6 +474,7 @@ type CreateRemoteAccessVpnResponse struct {
 	Account      string `json:"account"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	Fordisplay   bool   `json:"fordisplay"`
 	Id           string `json:"id"`
 	Iprange      string `json:"iprange"`
@@ -647,6 +649,7 @@ type CreateVpnConnectionResponse struct {
 	Created              string `json:"created"`
 	Domain               string `json:"domain"`
 	Domainid             string `json:"domainid"`
+	Domainpath           string `json:"domainpath"`
 	Dpd                  bool   `json:"dpd"`
 	Esplifetime          int64  `json:"esplifetime"`
 	Esppolicy            string `json:"esppolicy"`
@@ -1101,6 +1104,7 @@ type CreateVpnCustomerGatewayResponse struct {
 	Cidrlist         string `json:"cidrlist"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	Dpd              bool   `json:"dpd"`
 	Esplifetime      int64  `json:"esplifetime"`
 	Esppolicy        string `json:"esppolicy"`
@@ -1231,6 +1235,7 @@ type CreateVpnGatewayResponse struct {
 	Account    string `json:"account"`
 	Domain     string `json:"domain"`
 	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
 	Fordisplay bool   `json:"fordisplay"`
 	Id         string `json:"id"`
 	JobID      string `json:"jobid"`
@@ -1941,6 +1946,7 @@ type RemoteAccessVpn struct {
 	Account      string `json:"account"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	Fordisplay   bool   `json:"fordisplay"`
 	Id           string `json:"id"`
 	Iprange      string `json:"iprange"`
@@ -2302,6 +2308,7 @@ type VpnConnection struct {
 	Created              string `json:"created"`
 	Domain               string `json:"domain"`
 	Domainid             string `json:"domainid"`
+	Domainpath           string `json:"domainpath"`
 	Dpd                  bool   `json:"dpd"`
 	Esplifetime          int64  `json:"esplifetime"`
 	Esppolicy            string `json:"esppolicy"`
@@ -2674,6 +2681,7 @@ type VpnCustomerGateway struct {
 	Cidrlist         string `json:"cidrlist"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	Dpd              bool   `json:"dpd"`
 	Esplifetime      int64  `json:"esplifetime"`
 	Esppolicy        string `json:"esppolicy"`
@@ -3041,6 +3049,7 @@ type VpnGateway struct {
 	Account    string `json:"account"`
 	Domain     string `json:"domain"`
 	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
 	Fordisplay bool   `json:"fordisplay"`
 	Id         string `json:"id"`
 	JobID      string `json:"jobid"`
@@ -3371,16 +3380,17 @@ type ListVpnUsersResponse struct {
 }
 
 type VpnUser struct {
-	Account   string `json:"account"`
-	Domain    string `json:"domain"`
-	Domainid  string `json:"domainid"`
-	Id        string `json:"id"`
-	JobID     string `json:"jobid"`
-	Jobstatus int    `json:"jobstatus"`
-	Project   string `json:"project"`
-	Projectid string `json:"projectid"`
-	State     string `json:"state"`
-	Username  string `json:"username"`
+	Account    string `json:"account"`
+	Domain     string `json:"domain"`
+	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
+	Id         string `json:"id"`
+	JobID      string `json:"jobid"`
+	Jobstatus  int    `json:"jobstatus"`
+	Project    string `json:"project"`
+	Projectid  string `json:"projectid"`
+	State      string `json:"state"`
+	Username   string `json:"username"`
 }
 
 type RemoveVpnUserParams struct {
@@ -3671,6 +3681,7 @@ type ResetVpnConnectionResponse struct {
 	Created              string `json:"created"`
 	Domain               string `json:"domain"`
 	Domainid             string `json:"domainid"`
+	Domainpath           string `json:"domainpath"`
 	Dpd                  bool   `json:"dpd"`
 	Esplifetime          int64  `json:"esplifetime"`
 	Esppolicy            string `json:"esppolicy"`
@@ -3828,6 +3839,7 @@ type UpdateRemoteAccessVpnResponse struct {
 	Account      string `json:"account"`
 	Domain       string `json:"domain"`
 	Domainid     string `json:"domainid"`
+	Domainpath   string `json:"domainpath"`
 	Fordisplay   bool   `json:"fordisplay"`
 	Id           string `json:"id"`
 	Iprange      string `json:"iprange"`
@@ -3976,6 +3988,7 @@ type UpdateVpnConnectionResponse struct {
 	Created              string `json:"created"`
 	Domain               string `json:"domain"`
 	Domainid             string `json:"domainid"`
+	Domainpath           string `json:"domainpath"`
 	Dpd                  bool   `json:"dpd"`
 	Esplifetime          int64  `json:"esplifetime"`
 	Esppolicy            string `json:"esppolicy"`
@@ -4431,6 +4444,7 @@ type UpdateVpnCustomerGatewayResponse struct {
 	Cidrlist         string `json:"cidrlist"`
 	Domain           string `json:"domain"`
 	Domainid         string `json:"domainid"`
+	Domainpath       string `json:"domainpath"`
 	Dpd              bool   `json:"dpd"`
 	Esplifetime      int64  `json:"esplifetime"`
 	Esppolicy        string `json:"esppolicy"`
@@ -4585,6 +4599,7 @@ type UpdateVpnGatewayResponse struct {
 	Account    string `json:"account"`
 	Domain     string `json:"domain"`
 	Domainid   string `json:"domainid"`
+	Domainpath string `json:"domainpath"`
 	Fordisplay bool   `json:"fordisplay"`
 	Id         string `json:"id"`
 	JobID      string `json:"jobid"`
diff --git a/cloudstack/VirtualMachineService.go b/cloudstack/VirtualMachineService.go
index 9da4b05..9a1aae7 100644
--- a/cloudstack/VirtualMachineService.go
+++ b/cloudstack/VirtualMachineService.go
@@ -279,6 +279,7 @@ type AddNicToVirtualMachineResponse struct {
 	Cpuspeed              int                                           `json:"cpuspeed"`
 	Cpuused               string                                        `json:"cpuused"`
 	Created               string                                        `json:"created"`
+	Deleteprotection      bool                                          `json:"deleteprotection"`
 	Details               map[string]string                             `json:"details"`
 	Diskioread            int64                                         `json:"diskioread"`
 	Diskiowrite           int64                                         `json:"diskiowrite"`
@@ -290,6 +291,7 @@ type AddNicToVirtualMachineResponse struct {
 	Displayvm             bool                                          `json:"displayvm"`
 	Domain                string                                        `json:"domain"`
 	Domainid              string                                        `json:"domainid"`
+	Domainpath            string                                        `json:"domainpath"`
 	Forvirtualnetwork     bool                                          `json:"forvirtualnetwork"`
 	Group                 string                                        `json:"group"`
 	Groupid               string                                        `json:"groupid"`
@@ -303,6 +305,7 @@ type AddNicToVirtualMachineResponse struct {
 	Icon                  interface{}                                   `json:"icon"`
 	Id                    string                                        `json:"id"`
 	Instancename          string                                        `json:"instancename"`
+	Ipaddress             string                                        `json:"ipaddress"`
 	Isdynamicallyscalable bool                                          `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                        `json:"isodisplaytext"`
 	Isoid                 string                                        `json:"isoid"`
@@ -340,6 +343,7 @@ type AddNicToVirtualMachineResponse struct {
 	State                 string                                        `json:"state"`
 	Tags                  []Tags                                        `json:"tags"`
 	Templatedisplaytext   string                                        `json:"templatedisplaytext"`
+	Templateformat        string                                        `json:"templateformat"`
 	Templateid            string                                        `json:"templateid"`
 	Templatename          string                                        `json:"templatename"`
 	Templatetype          string                                        `json:"templatetype"`
@@ -351,6 +355,7 @@ type AddNicToVirtualMachineResponse struct {
 	Userid                string                                        `json:"userid"`
 	Username              string                                        `json:"username"`
 	Vgpu                  string                                        `json:"vgpu"`
+	Vmtype                string                                        `json:"vmtype"`
 	Vnfdetails            map[string]string                             `json:"vnfdetails"`
 	Vnfnics               []string                                      `json:"vnfnics"`
 	Zoneid                string                                        `json:"zoneid"`
@@ -362,6 +367,7 @@ type AddNicToVirtualMachineResponseSecuritygroup struct {
 	Description         string                                            `json:"description"`
 	Domain              string                                            `json:"domain"`
 	Domainid            string                                            `json:"domainid"`
+	Domainpath          string                                            `json:"domainpath"`
 	Egressrule          []AddNicToVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                            `json:"id"`
 	Ingressrule         []AddNicToVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -387,16 +393,18 @@ type AddNicToVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type AddNicToVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *AddNicToVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -621,6 +629,7 @@ type AssignVirtualMachineResponse struct {
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
 	Created               string                                      `json:"created"`
+	Deleteprotection      bool                                        `json:"deleteprotection"`
 	Details               map[string]string                           `json:"details"`
 	Diskioread            int64                                       `json:"diskioread"`
 	Diskiowrite           int64                                       `json:"diskiowrite"`
@@ -632,6 +641,7 @@ type AssignVirtualMachineResponse struct {
 	Displayvm             bool                                        `json:"displayvm"`
 	Domain                string                                      `json:"domain"`
 	Domainid              string                                      `json:"domainid"`
+	Domainpath            string                                      `json:"domainpath"`
 	Forvirtualnetwork     bool                                        `json:"forvirtualnetwork"`
 	Group                 string                                      `json:"group"`
 	Groupid               string                                      `json:"groupid"`
@@ -645,6 +655,7 @@ type AssignVirtualMachineResponse struct {
 	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
+	Ipaddress             string                                      `json:"ipaddress"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                      `json:"isodisplaytext"`
 	Isoid                 string                                      `json:"isoid"`
@@ -682,6 +693,7 @@ type AssignVirtualMachineResponse struct {
 	State                 string                                      `json:"state"`
 	Tags                  []Tags                                      `json:"tags"`
 	Templatedisplaytext   string                                      `json:"templatedisplaytext"`
+	Templateformat        string                                      `json:"templateformat"`
 	Templateid            string                                      `json:"templateid"`
 	Templatename          string                                      `json:"templatename"`
 	Templatetype          string                                      `json:"templatetype"`
@@ -693,6 +705,7 @@ type AssignVirtualMachineResponse struct {
 	Userid                string                                      `json:"userid"`
 	Username              string                                      `json:"username"`
 	Vgpu                  string                                      `json:"vgpu"`
+	Vmtype                string                                      `json:"vmtype"`
 	Vnfdetails            map[string]string                           `json:"vnfdetails"`
 	Vnfnics               []string                                    `json:"vnfnics"`
 	Zoneid                string                                      `json:"zoneid"`
@@ -704,6 +717,7 @@ type AssignVirtualMachineResponseSecuritygroup struct {
 	Description         string                                          `json:"description"`
 	Domain              string                                          `json:"domain"`
 	Domainid            string                                          `json:"domainid"`
+	Domainpath          string                                          `json:"domainpath"`
 	Egressrule          []AssignVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                          `json:"id"`
 	Ingressrule         []AssignVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -729,16 +743,18 @@ type AssignVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type AssignVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *AssignVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -993,6 +1009,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	Cpuspeed              int                                                   `json:"cpuspeed"`
 	Cpuused               string                                                `json:"cpuused"`
 	Created               string                                                `json:"created"`
+	Deleteprotection      bool                                                  `json:"deleteprotection"`
 	Details               map[string]string                                     `json:"details"`
 	Diskioread            int64                                                 `json:"diskioread"`
 	Diskiowrite           int64                                                 `json:"diskiowrite"`
@@ -1004,6 +1021,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	Displayvm             bool                                                  `json:"displayvm"`
 	Domain                string                                                `json:"domain"`
 	Domainid              string                                                `json:"domainid"`
+	Domainpath            string                                                `json:"domainpath"`
 	Forvirtualnetwork     bool                                                  `json:"forvirtualnetwork"`
 	Group                 string                                                `json:"group"`
 	Groupid               string                                                `json:"groupid"`
@@ -1017,6 +1035,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	Icon                  interface{}                                           `json:"icon"`
 	Id                    string                                                `json:"id"`
 	Instancename          string                                                `json:"instancename"`
+	Ipaddress             string                                                `json:"ipaddress"`
 	Isdynamicallyscalable bool                                                  `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                                `json:"isodisplaytext"`
 	Isoid                 string                                                `json:"isoid"`
@@ -1054,6 +1073,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	State                 string                                                `json:"state"`
 	Tags                  []Tags                                                `json:"tags"`
 	Templatedisplaytext   string                                                `json:"templatedisplaytext"`
+	Templateformat        string                                                `json:"templateformat"`
 	Templateid            string                                                `json:"templateid"`
 	Templatename          string                                                `json:"templatename"`
 	Templatetype          string                                                `json:"templatetype"`
@@ -1065,6 +1085,7 @@ type ChangeServiceForVirtualMachineResponse struct {
 	Userid                string                                                `json:"userid"`
 	Username              string                                                `json:"username"`
 	Vgpu                  string                                                `json:"vgpu"`
+	Vmtype                string                                                `json:"vmtype"`
 	Vnfdetails            map[string]string                                     `json:"vnfdetails"`
 	Vnfnics               []string                                              `json:"vnfnics"`
 	Zoneid                string                                                `json:"zoneid"`
@@ -1076,6 +1097,7 @@ type ChangeServiceForVirtualMachineResponseSecuritygroup struct {
 	Description         string                                                    `json:"description"`
 	Domain              string                                                    `json:"domain"`
 	Domainid            string                                                    `json:"domainid"`
+	Domainpath          string                                                    `json:"domainpath"`
 	Egressrule          []ChangeServiceForVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                                    `json:"id"`
 	Ingressrule         []ChangeServiceForVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -1101,16 +1123,18 @@ type ChangeServiceForVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type ChangeServiceForVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *ChangeServiceForVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -2604,6 +2628,7 @@ type DeployVirtualMachineResponse struct {
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
 	Created               string                                      `json:"created"`
+	Deleteprotection      bool                                        `json:"deleteprotection"`
 	Details               map[string]string                           `json:"details"`
 	Diskioread            int64                                       `json:"diskioread"`
 	Diskiowrite           int64                                       `json:"diskiowrite"`
@@ -2615,6 +2640,7 @@ type DeployVirtualMachineResponse struct {
 	Displayvm             bool                                        `json:"displayvm"`
 	Domain                string                                      `json:"domain"`
 	Domainid              string                                      `json:"domainid"`
+	Domainpath            string                                      `json:"domainpath"`
 	Forvirtualnetwork     bool                                        `json:"forvirtualnetwork"`
 	Group                 string                                      `json:"group"`
 	Groupid               string                                      `json:"groupid"`
@@ -2628,6 +2654,7 @@ type DeployVirtualMachineResponse struct {
 	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
+	Ipaddress             string                                      `json:"ipaddress"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                      `json:"isodisplaytext"`
 	Isoid                 string                                      `json:"isoid"`
@@ -2665,6 +2692,7 @@ type DeployVirtualMachineResponse struct {
 	State                 string                                      `json:"state"`
 	Tags                  []Tags                                      `json:"tags"`
 	Templatedisplaytext   string                                      `json:"templatedisplaytext"`
+	Templateformat        string                                      `json:"templateformat"`
 	Templateid            string                                      `json:"templateid"`
 	Templatename          string                                      `json:"templatename"`
 	Templatetype          string                                      `json:"templatetype"`
@@ -2676,6 +2704,7 @@ type DeployVirtualMachineResponse struct {
 	Userid                string                                      `json:"userid"`
 	Username              string                                      `json:"username"`
 	Vgpu                  string                                      `json:"vgpu"`
+	Vmtype                string                                      `json:"vmtype"`
 	Vnfdetails            map[string]string                           `json:"vnfdetails"`
 	Vnfnics               []string                                    `json:"vnfnics"`
 	Zoneid                string                                      `json:"zoneid"`
@@ -2687,6 +2716,7 @@ type DeployVirtualMachineResponseSecuritygroup struct {
 	Description         string                                          `json:"description"`
 	Domain              string                                          `json:"domain"`
 	Domainid            string                                          `json:"domainid"`
+	Domainpath          string                                          `json:"domainpath"`
 	Egressrule          []DeployVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                          `json:"id"`
 	Ingressrule         []DeployVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -2712,16 +2742,18 @@ type DeployVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type DeployVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *DeployVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -2894,6 +2926,7 @@ type DestroyVirtualMachineResponse struct {
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
 	Created               string                                       `json:"created"`
+	Deleteprotection      bool                                         `json:"deleteprotection"`
 	Details               map[string]string                            `json:"details"`
 	Diskioread            int64                                        `json:"diskioread"`
 	Diskiowrite           int64                                        `json:"diskiowrite"`
@@ -2905,6 +2938,7 @@ type DestroyVirtualMachineResponse struct {
 	Displayvm             bool                                         `json:"displayvm"`
 	Domain                string                                       `json:"domain"`
 	Domainid              string                                       `json:"domainid"`
+	Domainpath            string                                       `json:"domainpath"`
 	Forvirtualnetwork     bool                                         `json:"forvirtualnetwork"`
 	Group                 string                                       `json:"group"`
 	Groupid               string                                       `json:"groupid"`
@@ -2918,6 +2952,7 @@ type DestroyVirtualMachineResponse struct {
 	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
+	Ipaddress             string                                       `json:"ipaddress"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                       `json:"isodisplaytext"`
 	Isoid                 string                                       `json:"isoid"`
@@ -2955,6 +2990,7 @@ type DestroyVirtualMachineResponse struct {
 	State                 string                                       `json:"state"`
 	Tags                  []Tags                                       `json:"tags"`
 	Templatedisplaytext   string                                       `json:"templatedisplaytext"`
+	Templateformat        string                                       `json:"templateformat"`
 	Templateid            string                                       `json:"templateid"`
 	Templatename          string                                       `json:"templatename"`
 	Templatetype          string                                       `json:"templatetype"`
@@ -2966,6 +3002,7 @@ type DestroyVirtualMachineResponse struct {
 	Userid                string                                       `json:"userid"`
 	Username              string                                       `json:"username"`
 	Vgpu                  string                                       `json:"vgpu"`
+	Vmtype                string                                       `json:"vmtype"`
 	Vnfdetails            map[string]string                            `json:"vnfdetails"`
 	Vnfnics               []string                                     `json:"vnfnics"`
 	Zoneid                string                                       `json:"zoneid"`
@@ -2977,6 +3014,7 @@ type DestroyVirtualMachineResponseSecuritygroup struct {
 	Description         string                                           `json:"description"`
 	Domain              string                                           `json:"domain"`
 	Domainid            string                                           `json:"domainid"`
+	Domainpath          string                                           `json:"domainpath"`
 	Egressrule          []DestroyVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                           `json:"id"`
 	Ingressrule         []DestroyVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -3002,16 +3040,18 @@ type DestroyVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type DestroyVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *DestroyVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -4303,6 +4343,7 @@ type VirtualMachine struct {
 	Cpuspeed              int                           `json:"cpuspeed"`
 	Cpuused               string                        `json:"cpuused"`
 	Created               string                        `json:"created"`
+	Deleteprotection      bool                          `json:"deleteprotection"`
 	Details               map[string]string             `json:"details"`
 	Diskioread            int64                         `json:"diskioread"`
 	Diskiowrite           int64                         `json:"diskiowrite"`
@@ -4314,6 +4355,7 @@ type VirtualMachine struct {
 	Displayvm             bool                          `json:"displayvm"`
 	Domain                string                        `json:"domain"`
 	Domainid              string                        `json:"domainid"`
+	Domainpath            string                        `json:"domainpath"`
 	Forvirtualnetwork     bool                          `json:"forvirtualnetwork"`
 	Group                 string                        `json:"group"`
 	Groupid               string                        `json:"groupid"`
@@ -4327,6 +4369,7 @@ type VirtualMachine struct {
 	Icon                  interface{}                   `json:"icon"`
 	Id                    string                        `json:"id"`
 	Instancename          string                        `json:"instancename"`
+	Ipaddress             string                        `json:"ipaddress"`
 	Isdynamicallyscalable bool                          `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                        `json:"isodisplaytext"`
 	Isoid                 string                        `json:"isoid"`
@@ -4364,6 +4407,7 @@ type VirtualMachine struct {
 	State                 string                        `json:"state"`
 	Tags                  []Tags                        `json:"tags"`
 	Templatedisplaytext   string                        `json:"templatedisplaytext"`
+	Templateformat        string                        `json:"templateformat"`
 	Templateid            string                        `json:"templateid"`
 	Templatename          string                        `json:"templatename"`
 	Templatetype          string                        `json:"templatetype"`
@@ -4375,6 +4419,7 @@ type VirtualMachine struct {
 	Userid                string                        `json:"userid"`
 	Username              string                        `json:"username"`
 	Vgpu                  string                        `json:"vgpu"`
+	Vmtype                string                        `json:"vmtype"`
 	Vnfdetails            map[string]string             `json:"vnfdetails"`
 	Vnfnics               []string                      `json:"vnfnics"`
 	Zoneid                string                        `json:"zoneid"`
@@ -4386,6 +4431,7 @@ type VirtualMachineSecuritygroup struct {
 	Description         string                            `json:"description"`
 	Domain              string                            `json:"domain"`
 	Domainid            string                            `json:"domainid"`
+	Domainpath          string                            `json:"domainpath"`
 	Egressrule          []VirtualMachineSecuritygroupRule `json:"egressrule"`
 	Id                  string                            `json:"id"`
 	Ingressrule         []VirtualMachineSecuritygroupRule `json:"ingressrule"`
@@ -4411,16 +4457,18 @@ type VirtualMachineSecuritygroupRule struct {
 }
 
 type VirtualMachineAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *VirtualMachine) UnmarshalJSON(b []byte) error {
@@ -5565,6 +5613,7 @@ type VirtualMachinesMetric struct {
 	Cputotal              string                               `json:"cputotal"`
 	Cpuused               string                               `json:"cpuused"`
 	Created               string                               `json:"created"`
+	Deleteprotection      bool                                 `json:"deleteprotection"`
 	Details               map[string]string                    `json:"details"`
 	Diskiopstotal         int64                                `json:"diskiopstotal"`
 	Diskioread            int64                                `json:"diskioread"`
@@ -5579,6 +5628,7 @@ type VirtualMachinesMetric struct {
 	Displayvm             bool                                 `json:"displayvm"`
 	Domain                string                               `json:"domain"`
 	Domainid              string                               `json:"domainid"`
+	Domainpath            string                               `json:"domainpath"`
 	Forvirtualnetwork     bool                                 `json:"forvirtualnetwork"`
 	Group                 string                               `json:"group"`
 	Groupid               string                               `json:"groupid"`
@@ -5633,6 +5683,7 @@ type VirtualMachinesMetric struct {
 	State                 string                               `json:"state"`
 	Tags                  []Tags                               `json:"tags"`
 	Templatedisplaytext   string                               `json:"templatedisplaytext"`
+	Templateformat        string                               `json:"templateformat"`
 	Templateid            string                               `json:"templateid"`
 	Templatename          string                               `json:"templatename"`
 	Templatetype          string                               `json:"templatetype"`
@@ -5644,6 +5695,7 @@ type VirtualMachinesMetric struct {
 	Userid                string                               `json:"userid"`
 	Username              string                               `json:"username"`
 	Vgpu                  string                               `json:"vgpu"`
+	Vmtype                string                               `json:"vmtype"`
 	Vnfdetails            map[string]string                    `json:"vnfdetails"`
 	Vnfnics               []string                             `json:"vnfnics"`
 	Zoneid                string                               `json:"zoneid"`
@@ -5655,6 +5707,7 @@ type VirtualMachinesMetricSecuritygroup struct {
 	Description         string                                   `json:"description"`
 	Domain              string                                   `json:"domain"`
 	Domainid            string                                   `json:"domainid"`
+	Domainpath          string                                   `json:"domainpath"`
 	Egressrule          []VirtualMachinesMetricSecuritygroupRule `json:"egressrule"`
 	Id                  string                                   `json:"id"`
 	Ingressrule         []VirtualMachinesMetricSecuritygroupRule `json:"ingressrule"`
@@ -5680,16 +5733,18 @@ type VirtualMachinesMetricSecuritygroupRule struct {
 }
 
 type VirtualMachinesMetricAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *VirtualMachinesMetric) UnmarshalJSON(b []byte) error {
@@ -5885,6 +5940,7 @@ type MigrateVirtualMachineResponse struct {
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
 	Created               string                                       `json:"created"`
+	Deleteprotection      bool                                         `json:"deleteprotection"`
 	Details               map[string]string                            `json:"details"`
 	Diskioread            int64                                        `json:"diskioread"`
 	Diskiowrite           int64                                        `json:"diskiowrite"`
@@ -5896,6 +5952,7 @@ type MigrateVirtualMachineResponse struct {
 	Displayvm             bool                                         `json:"displayvm"`
 	Domain                string                                       `json:"domain"`
 	Domainid              string                                       `json:"domainid"`
+	Domainpath            string                                       `json:"domainpath"`
 	Forvirtualnetwork     bool                                         `json:"forvirtualnetwork"`
 	Group                 string                                       `json:"group"`
 	Groupid               string                                       `json:"groupid"`
@@ -5909,6 +5966,7 @@ type MigrateVirtualMachineResponse struct {
 	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
+	Ipaddress             string                                       `json:"ipaddress"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                       `json:"isodisplaytext"`
 	Isoid                 string                                       `json:"isoid"`
@@ -5946,6 +6004,7 @@ type MigrateVirtualMachineResponse struct {
 	State                 string                                       `json:"state"`
 	Tags                  []Tags                                       `json:"tags"`
 	Templatedisplaytext   string                                       `json:"templatedisplaytext"`
+	Templateformat        string                                       `json:"templateformat"`
 	Templateid            string                                       `json:"templateid"`
 	Templatename          string                                       `json:"templatename"`
 	Templatetype          string                                       `json:"templatetype"`
@@ -5957,6 +6016,7 @@ type MigrateVirtualMachineResponse struct {
 	Userid                string                                       `json:"userid"`
 	Username              string                                       `json:"username"`
 	Vgpu                  string                                       `json:"vgpu"`
+	Vmtype                string                                       `json:"vmtype"`
 	Vnfdetails            map[string]string                            `json:"vnfdetails"`
 	Vnfnics               []string                                     `json:"vnfnics"`
 	Zoneid                string                                       `json:"zoneid"`
@@ -5968,6 +6028,7 @@ type MigrateVirtualMachineResponseSecuritygroup struct {
 	Description         string                                           `json:"description"`
 	Domain              string                                           `json:"domain"`
 	Domainid            string                                           `json:"domainid"`
+	Domainpath          string                                           `json:"domainpath"`
 	Egressrule          []MigrateVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                           `json:"id"`
 	Ingressrule         []MigrateVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -5993,16 +6054,18 @@ type MigrateVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type MigrateVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *MigrateVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -6217,6 +6280,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	Cpuspeed              int                                                    `json:"cpuspeed"`
 	Cpuused               string                                                 `json:"cpuused"`
 	Created               string                                                 `json:"created"`
+	Deleteprotection      bool                                                   `json:"deleteprotection"`
 	Details               map[string]string                                      `json:"details"`
 	Diskioread            int64                                                  `json:"diskioread"`
 	Diskiowrite           int64                                                  `json:"diskiowrite"`
@@ -6228,6 +6292,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	Displayvm             bool                                                   `json:"displayvm"`
 	Domain                string                                                 `json:"domain"`
 	Domainid              string                                                 `json:"domainid"`
+	Domainpath            string                                                 `json:"domainpath"`
 	Forvirtualnetwork     bool                                                   `json:"forvirtualnetwork"`
 	Group                 string                                                 `json:"group"`
 	Groupid               string                                                 `json:"groupid"`
@@ -6241,6 +6306,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	Icon                  interface{}                                            `json:"icon"`
 	Id                    string                                                 `json:"id"`
 	Instancename          string                                                 `json:"instancename"`
+	Ipaddress             string                                                 `json:"ipaddress"`
 	Isdynamicallyscalable bool                                                   `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                                 `json:"isodisplaytext"`
 	Isoid                 string                                                 `json:"isoid"`
@@ -6278,6 +6344,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	State                 string                                                 `json:"state"`
 	Tags                  []Tags                                                 `json:"tags"`
 	Templatedisplaytext   string                                                 `json:"templatedisplaytext"`
+	Templateformat        string                                                 `json:"templateformat"`
 	Templateid            string                                                 `json:"templateid"`
 	Templatename          string                                                 `json:"templatename"`
 	Templatetype          string                                                 `json:"templatetype"`
@@ -6289,6 +6356,7 @@ type MigrateVirtualMachineWithVolumeResponse struct {
 	Userid                string                                                 `json:"userid"`
 	Username              string                                                 `json:"username"`
 	Vgpu                  string                                                 `json:"vgpu"`
+	Vmtype                string                                                 `json:"vmtype"`
 	Vnfdetails            map[string]string                                      `json:"vnfdetails"`
 	Vnfnics               []string                                               `json:"vnfnics"`
 	Zoneid                string                                                 `json:"zoneid"`
@@ -6300,6 +6368,7 @@ type MigrateVirtualMachineWithVolumeResponseSecuritygroup struct {
 	Description         string                                                     `json:"description"`
 	Domain              string                                                     `json:"domain"`
 	Domainid            string                                                     `json:"domainid"`
+	Domainpath          string                                                     `json:"domainpath"`
 	Egressrule          []MigrateVirtualMachineWithVolumeResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                                     `json:"id"`
 	Ingressrule         []MigrateVirtualMachineWithVolumeResponseSecuritygroupRule `json:"ingressrule"`
@@ -6325,16 +6394,18 @@ type MigrateVirtualMachineWithVolumeResponseSecuritygroupRule struct {
 }
 
 type MigrateVirtualMachineWithVolumeResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *MigrateVirtualMachineWithVolumeResponse) UnmarshalJSON(b []byte) error {
@@ -6507,6 +6578,7 @@ type RebootVirtualMachineResponse struct {
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
 	Created               string                                      `json:"created"`
+	Deleteprotection      bool                                        `json:"deleteprotection"`
 	Details               map[string]string                           `json:"details"`
 	Diskioread            int64                                       `json:"diskioread"`
 	Diskiowrite           int64                                       `json:"diskiowrite"`
@@ -6518,6 +6590,7 @@ type RebootVirtualMachineResponse struct {
 	Displayvm             bool                                        `json:"displayvm"`
 	Domain                string                                      `json:"domain"`
 	Domainid              string                                      `json:"domainid"`
+	Domainpath            string                                      `json:"domainpath"`
 	Forvirtualnetwork     bool                                        `json:"forvirtualnetwork"`
 	Group                 string                                      `json:"group"`
 	Groupid               string                                      `json:"groupid"`
@@ -6531,6 +6604,7 @@ type RebootVirtualMachineResponse struct {
 	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
+	Ipaddress             string                                      `json:"ipaddress"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                      `json:"isodisplaytext"`
 	Isoid                 string                                      `json:"isoid"`
@@ -6568,6 +6642,7 @@ type RebootVirtualMachineResponse struct {
 	State                 string                                      `json:"state"`
 	Tags                  []Tags                                      `json:"tags"`
 	Templatedisplaytext   string                                      `json:"templatedisplaytext"`
+	Templateformat        string                                      `json:"templateformat"`
 	Templateid            string                                      `json:"templateid"`
 	Templatename          string                                      `json:"templatename"`
 	Templatetype          string                                      `json:"templatetype"`
@@ -6579,6 +6654,7 @@ type RebootVirtualMachineResponse struct {
 	Userid                string                                      `json:"userid"`
 	Username              string                                      `json:"username"`
 	Vgpu                  string                                      `json:"vgpu"`
+	Vmtype                string                                      `json:"vmtype"`
 	Vnfdetails            map[string]string                           `json:"vnfdetails"`
 	Vnfnics               []string                                    `json:"vnfnics"`
 	Zoneid                string                                      `json:"zoneid"`
@@ -6590,6 +6666,7 @@ type RebootVirtualMachineResponseSecuritygroup struct {
 	Description         string                                          `json:"description"`
 	Domain              string                                          `json:"domain"`
 	Domainid            string                                          `json:"domainid"`
+	Domainpath          string                                          `json:"domainpath"`
 	Egressrule          []RebootVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                          `json:"id"`
 	Ingressrule         []RebootVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -6615,16 +6692,18 @@ type RebootVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type RebootVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *RebootVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -6727,6 +6806,7 @@ type RecoverVirtualMachineResponse struct {
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
 	Created               string                                       `json:"created"`
+	Deleteprotection      bool                                         `json:"deleteprotection"`
 	Details               map[string]string                            `json:"details"`
 	Diskioread            int64                                        `json:"diskioread"`
 	Diskiowrite           int64                                        `json:"diskiowrite"`
@@ -6738,6 +6818,7 @@ type RecoverVirtualMachineResponse struct {
 	Displayvm             bool                                         `json:"displayvm"`
 	Domain                string                                       `json:"domain"`
 	Domainid              string                                       `json:"domainid"`
+	Domainpath            string                                       `json:"domainpath"`
 	Forvirtualnetwork     bool                                         `json:"forvirtualnetwork"`
 	Group                 string                                       `json:"group"`
 	Groupid               string                                       `json:"groupid"`
@@ -6751,6 +6832,7 @@ type RecoverVirtualMachineResponse struct {
 	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
+	Ipaddress             string                                       `json:"ipaddress"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                       `json:"isodisplaytext"`
 	Isoid                 string                                       `json:"isoid"`
@@ -6788,6 +6870,7 @@ type RecoverVirtualMachineResponse struct {
 	State                 string                                       `json:"state"`
 	Tags                  []Tags                                       `json:"tags"`
 	Templatedisplaytext   string                                       `json:"templatedisplaytext"`
+	Templateformat        string                                       `json:"templateformat"`
 	Templateid            string                                       `json:"templateid"`
 	Templatename          string                                       `json:"templatename"`
 	Templatetype          string                                       `json:"templatetype"`
@@ -6799,6 +6882,7 @@ type RecoverVirtualMachineResponse struct {
 	Userid                string                                       `json:"userid"`
 	Username              string                                       `json:"username"`
 	Vgpu                  string                                       `json:"vgpu"`
+	Vmtype                string                                       `json:"vmtype"`
 	Vnfdetails            map[string]string                            `json:"vnfdetails"`
 	Vnfnics               []string                                     `json:"vnfnics"`
 	Zoneid                string                                       `json:"zoneid"`
@@ -6810,6 +6894,7 @@ type RecoverVirtualMachineResponseSecuritygroup struct {
 	Description         string                                           `json:"description"`
 	Domain              string                                           `json:"domain"`
 	Domainid            string                                           `json:"domainid"`
+	Domainpath          string                                           `json:"domainpath"`
 	Egressrule          []RecoverVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                           `json:"id"`
 	Ingressrule         []RecoverVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -6835,16 +6920,18 @@ type RecoverVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type RecoverVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *RecoverVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -6992,6 +7079,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	Cpuspeed              int                                                `json:"cpuspeed"`
 	Cpuused               string                                             `json:"cpuused"`
 	Created               string                                             `json:"created"`
+	Deleteprotection      bool                                               `json:"deleteprotection"`
 	Details               map[string]string                                  `json:"details"`
 	Diskioread            int64                                              `json:"diskioread"`
 	Diskiowrite           int64                                              `json:"diskiowrite"`
@@ -7003,6 +7091,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	Displayvm             bool                                               `json:"displayvm"`
 	Domain                string                                             `json:"domain"`
 	Domainid              string                                             `json:"domainid"`
+	Domainpath            string                                             `json:"domainpath"`
 	Forvirtualnetwork     bool                                               `json:"forvirtualnetwork"`
 	Group                 string                                             `json:"group"`
 	Groupid               string                                             `json:"groupid"`
@@ -7016,6 +7105,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	Icon                  interface{}                                        `json:"icon"`
 	Id                    string                                             `json:"id"`
 	Instancename          string                                             `json:"instancename"`
+	Ipaddress             string                                             `json:"ipaddress"`
 	Isdynamicallyscalable bool                                               `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                             `json:"isodisplaytext"`
 	Isoid                 string                                             `json:"isoid"`
@@ -7053,6 +7143,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	State                 string                                             `json:"state"`
 	Tags                  []Tags                                             `json:"tags"`
 	Templatedisplaytext   string                                             `json:"templatedisplaytext"`
+	Templateformat        string                                             `json:"templateformat"`
 	Templateid            string                                             `json:"templateid"`
 	Templatename          string                                             `json:"templatename"`
 	Templatetype          string                                             `json:"templatetype"`
@@ -7064,6 +7155,7 @@ type RemoveNicFromVirtualMachineResponse struct {
 	Userid                string                                             `json:"userid"`
 	Username              string                                             `json:"username"`
 	Vgpu                  string                                             `json:"vgpu"`
+	Vmtype                string                                             `json:"vmtype"`
 	Vnfdetails            map[string]string                                  `json:"vnfdetails"`
 	Vnfnics               []string                                           `json:"vnfnics"`
 	Zoneid                string                                             `json:"zoneid"`
@@ -7075,6 +7167,7 @@ type RemoveNicFromVirtualMachineResponseSecuritygroup struct {
 	Description         string                                                 `json:"description"`
 	Domain              string                                                 `json:"domain"`
 	Domainid            string                                                 `json:"domainid"`
+	Domainpath          string                                                 `json:"domainpath"`
 	Egressrule          []RemoveNicFromVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                                 `json:"id"`
 	Ingressrule         []RemoveNicFromVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -7100,16 +7193,18 @@ type RemoveNicFromVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type RemoveNicFromVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *RemoveNicFromVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -7256,6 +7351,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	Cpuspeed              int                                                   `json:"cpuspeed"`
 	Cpuused               string                                                `json:"cpuused"`
 	Created               string                                                `json:"created"`
+	Deleteprotection      bool                                                  `json:"deleteprotection"`
 	Details               map[string]string                                     `json:"details"`
 	Diskioread            int64                                                 `json:"diskioread"`
 	Diskiowrite           int64                                                 `json:"diskiowrite"`
@@ -7267,6 +7363,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	Displayvm             bool                                                  `json:"displayvm"`
 	Domain                string                                                `json:"domain"`
 	Domainid              string                                                `json:"domainid"`
+	Domainpath            string                                                `json:"domainpath"`
 	Forvirtualnetwork     bool                                                  `json:"forvirtualnetwork"`
 	Group                 string                                                `json:"group"`
 	Groupid               string                                                `json:"groupid"`
@@ -7280,6 +7377,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	Icon                  interface{}                                           `json:"icon"`
 	Id                    string                                                `json:"id"`
 	Instancename          string                                                `json:"instancename"`
+	Ipaddress             string                                                `json:"ipaddress"`
 	Isdynamicallyscalable bool                                                  `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                                `json:"isodisplaytext"`
 	Isoid                 string                                                `json:"isoid"`
@@ -7317,6 +7415,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	State                 string                                                `json:"state"`
 	Tags                  []Tags                                                `json:"tags"`
 	Templatedisplaytext   string                                                `json:"templatedisplaytext"`
+	Templateformat        string                                                `json:"templateformat"`
 	Templateid            string                                                `json:"templateid"`
 	Templatename          string                                                `json:"templatename"`
 	Templatetype          string                                                `json:"templatetype"`
@@ -7328,6 +7427,7 @@ type ResetPasswordForVirtualMachineResponse struct {
 	Userid                string                                                `json:"userid"`
 	Username              string                                                `json:"username"`
 	Vgpu                  string                                                `json:"vgpu"`
+	Vmtype                string                                                `json:"vmtype"`
 	Vnfdetails            map[string]string                                     `json:"vnfdetails"`
 	Vnfnics               []string                                              `json:"vnfnics"`
 	Zoneid                string                                                `json:"zoneid"`
@@ -7339,6 +7439,7 @@ type ResetPasswordForVirtualMachineResponseSecuritygroup struct {
 	Description         string                                                    `json:"description"`
 	Domain              string                                                    `json:"domain"`
 	Domainid            string                                                    `json:"domainid"`
+	Domainpath          string                                                    `json:"domainpath"`
 	Egressrule          []ResetPasswordForVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                                    `json:"id"`
 	Ingressrule         []ResetPasswordForVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -7364,16 +7465,18 @@ type ResetPasswordForVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type ResetPasswordForVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *ResetPasswordForVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -7412,6 +7515,23 @@ func (p *RestoreVirtualMachineParams) toURLValues() url.Values {
 	if p.p == nil {
 		return u
 	}
+	if v, found := p.p["details"]; found {
+		m := v.(map[string]string)
+		for i, k := range getSortedKeysFromMap(m) {
+			u.Set(fmt.Sprintf("details[%d].%s", i, k), m[k])
+		}
+	}
+	if v, found := p.p["diskofferingid"]; found {
+		u.Set("diskofferingid", v.(string))
+	}
+	if v, found := p.p["expunge"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("expunge", vv)
+	}
+	if v, found := p.p["rootdisksize"]; found {
+		vv := strconv.FormatInt(v.(int64), 10)
+		u.Set("rootdisksize", vv)
+	}
 	if v, found := p.p["templateid"]; found {
 		u.Set("templateid", v.(string))
 	}
@@ -7421,6 +7541,90 @@ func (p *RestoreVirtualMachineParams) toURLValues() url.Values {
 	return u
 }
 
+func (p *RestoreVirtualMachineParams) SetDetails(v map[string]string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["details"] = v
+}
+
+func (p *RestoreVirtualMachineParams) ResetDetails() {
+	if p.p != nil && p.p["details"] != nil {
+		delete(p.p, "details")
+	}
+}
+
+func (p *RestoreVirtualMachineParams) GetDetails() (map[string]string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["details"].(map[string]string)
+	return value, ok
+}
+
+func (p *RestoreVirtualMachineParams) SetDiskofferingid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["diskofferingid"] = v
+}
+
+func (p *RestoreVirtualMachineParams) ResetDiskofferingid() {
+	if p.p != nil && p.p["diskofferingid"] != nil {
+		delete(p.p, "diskofferingid")
+	}
+}
+
+func (p *RestoreVirtualMachineParams) GetDiskofferingid() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["diskofferingid"].(string)
+	return value, ok
+}
+
+func (p *RestoreVirtualMachineParams) SetExpunge(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["expunge"] = v
+}
+
+func (p *RestoreVirtualMachineParams) ResetExpunge() {
+	if p.p != nil && p.p["expunge"] != nil {
+		delete(p.p, "expunge")
+	}
+}
+
+func (p *RestoreVirtualMachineParams) GetExpunge() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["expunge"].(bool)
+	return value, ok
+}
+
+func (p *RestoreVirtualMachineParams) SetRootdisksize(v int64) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["rootdisksize"] = v
+}
+
+func (p *RestoreVirtualMachineParams) ResetRootdisksize() {
+	if p.p != nil && p.p["rootdisksize"] != nil {
+		delete(p.p, "rootdisksize")
+	}
+}
+
+func (p *RestoreVirtualMachineParams) GetRootdisksize() (int64, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["rootdisksize"].(int64)
+	return value, ok
+}
+
 func (p *RestoreVirtualMachineParams) SetTemplateid(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -7520,6 +7724,7 @@ type RestoreVirtualMachineResponse struct {
 	Cpuspeed              int                                          `json:"cpuspeed"`
 	Cpuused               string                                       `json:"cpuused"`
 	Created               string                                       `json:"created"`
+	Deleteprotection      bool                                         `json:"deleteprotection"`
 	Details               map[string]string                            `json:"details"`
 	Diskioread            int64                                        `json:"diskioread"`
 	Diskiowrite           int64                                        `json:"diskiowrite"`
@@ -7531,6 +7736,7 @@ type RestoreVirtualMachineResponse struct {
 	Displayvm             bool                                         `json:"displayvm"`
 	Domain                string                                       `json:"domain"`
 	Domainid              string                                       `json:"domainid"`
+	Domainpath            string                                       `json:"domainpath"`
 	Forvirtualnetwork     bool                                         `json:"forvirtualnetwork"`
 	Group                 string                                       `json:"group"`
 	Groupid               string                                       `json:"groupid"`
@@ -7544,6 +7750,7 @@ type RestoreVirtualMachineResponse struct {
 	Icon                  interface{}                                  `json:"icon"`
 	Id                    string                                       `json:"id"`
 	Instancename          string                                       `json:"instancename"`
+	Ipaddress             string                                       `json:"ipaddress"`
 	Isdynamicallyscalable bool                                         `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                       `json:"isodisplaytext"`
 	Isoid                 string                                       `json:"isoid"`
@@ -7581,6 +7788,7 @@ type RestoreVirtualMachineResponse struct {
 	State                 string                                       `json:"state"`
 	Tags                  []Tags                                       `json:"tags"`
 	Templatedisplaytext   string                                       `json:"templatedisplaytext"`
+	Templateformat        string                                       `json:"templateformat"`
 	Templateid            string                                       `json:"templateid"`
 	Templatename          string                                       `json:"templatename"`
 	Templatetype          string                                       `json:"templatetype"`
@@ -7592,6 +7800,7 @@ type RestoreVirtualMachineResponse struct {
 	Userid                string                                       `json:"userid"`
 	Username              string                                       `json:"username"`
 	Vgpu                  string                                       `json:"vgpu"`
+	Vmtype                string                                       `json:"vmtype"`
 	Vnfdetails            map[string]string                            `json:"vnfdetails"`
 	Vnfnics               []string                                     `json:"vnfnics"`
 	Zoneid                string                                       `json:"zoneid"`
@@ -7603,6 +7812,7 @@ type RestoreVirtualMachineResponseSecuritygroup struct {
 	Description         string                                           `json:"description"`
 	Domain              string                                           `json:"domain"`
 	Domainid            string                                           `json:"domainid"`
+	Domainpath          string                                           `json:"domainpath"`
 	Egressrule          []RestoreVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                           `json:"id"`
 	Ingressrule         []RestoreVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -7628,16 +7838,18 @@ type RestoreVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type RestoreVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *RestoreVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -8140,6 +8352,7 @@ type StartVirtualMachineResponse struct {
 	Cpuspeed              int                                        `json:"cpuspeed"`
 	Cpuused               string                                     `json:"cpuused"`
 	Created               string                                     `json:"created"`
+	Deleteprotection      bool                                       `json:"deleteprotection"`
 	Details               map[string]string                          `json:"details"`
 	Diskioread            int64                                      `json:"diskioread"`
 	Diskiowrite           int64                                      `json:"diskiowrite"`
@@ -8151,6 +8364,7 @@ type StartVirtualMachineResponse struct {
 	Displayvm             bool                                       `json:"displayvm"`
 	Domain                string                                     `json:"domain"`
 	Domainid              string                                     `json:"domainid"`
+	Domainpath            string                                     `json:"domainpath"`
 	Forvirtualnetwork     bool                                       `json:"forvirtualnetwork"`
 	Group                 string                                     `json:"group"`
 	Groupid               string                                     `json:"groupid"`
@@ -8164,6 +8378,7 @@ type StartVirtualMachineResponse struct {
 	Icon                  interface{}                                `json:"icon"`
 	Id                    string                                     `json:"id"`
 	Instancename          string                                     `json:"instancename"`
+	Ipaddress             string                                     `json:"ipaddress"`
 	Isdynamicallyscalable bool                                       `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                     `json:"isodisplaytext"`
 	Isoid                 string                                     `json:"isoid"`
@@ -8201,6 +8416,7 @@ type StartVirtualMachineResponse struct {
 	State                 string                                     `json:"state"`
 	Tags                  []Tags                                     `json:"tags"`
 	Templatedisplaytext   string                                     `json:"templatedisplaytext"`
+	Templateformat        string                                     `json:"templateformat"`
 	Templateid            string                                     `json:"templateid"`
 	Templatename          string                                     `json:"templatename"`
 	Templatetype          string                                     `json:"templatetype"`
@@ -8212,6 +8428,7 @@ type StartVirtualMachineResponse struct {
 	Userid                string                                     `json:"userid"`
 	Username              string                                     `json:"username"`
 	Vgpu                  string                                     `json:"vgpu"`
+	Vmtype                string                                     `json:"vmtype"`
 	Vnfdetails            map[string]string                          `json:"vnfdetails"`
 	Vnfnics               []string                                   `json:"vnfnics"`
 	Zoneid                string                                     `json:"zoneid"`
@@ -8223,6 +8440,7 @@ type StartVirtualMachineResponseSecuritygroup struct {
 	Description         string                                         `json:"description"`
 	Domain              string                                         `json:"domain"`
 	Domainid            string                                         `json:"domainid"`
+	Domainpath          string                                         `json:"domainpath"`
 	Egressrule          []StartVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                         `json:"id"`
 	Ingressrule         []StartVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -8248,16 +8466,18 @@ type StartVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type StartVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *StartVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -8405,6 +8625,7 @@ type StopVirtualMachineResponse struct {
 	Cpuspeed              int                                       `json:"cpuspeed"`
 	Cpuused               string                                    `json:"cpuused"`
 	Created               string                                    `json:"created"`
+	Deleteprotection      bool                                      `json:"deleteprotection"`
 	Details               map[string]string                         `json:"details"`
 	Diskioread            int64                                     `json:"diskioread"`
 	Diskiowrite           int64                                     `json:"diskiowrite"`
@@ -8416,6 +8637,7 @@ type StopVirtualMachineResponse struct {
 	Displayvm             bool                                      `json:"displayvm"`
 	Domain                string                                    `json:"domain"`
 	Domainid              string                                    `json:"domainid"`
+	Domainpath            string                                    `json:"domainpath"`
 	Forvirtualnetwork     bool                                      `json:"forvirtualnetwork"`
 	Group                 string                                    `json:"group"`
 	Groupid               string                                    `json:"groupid"`
@@ -8429,6 +8651,7 @@ type StopVirtualMachineResponse struct {
 	Icon                  interface{}                               `json:"icon"`
 	Id                    string                                    `json:"id"`
 	Instancename          string                                    `json:"instancename"`
+	Ipaddress             string                                    `json:"ipaddress"`
 	Isdynamicallyscalable bool                                      `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                    `json:"isodisplaytext"`
 	Isoid                 string                                    `json:"isoid"`
@@ -8466,6 +8689,7 @@ type StopVirtualMachineResponse struct {
 	State                 string                                    `json:"state"`
 	Tags                  []Tags                                    `json:"tags"`
 	Templatedisplaytext   string                                    `json:"templatedisplaytext"`
+	Templateformat        string                                    `json:"templateformat"`
 	Templateid            string                                    `json:"templateid"`
 	Templatename          string                                    `json:"templatename"`
 	Templatetype          string                                    `json:"templatetype"`
@@ -8477,6 +8701,7 @@ type StopVirtualMachineResponse struct {
 	Userid                string                                    `json:"userid"`
 	Username              string                                    `json:"username"`
 	Vgpu                  string                                    `json:"vgpu"`
+	Vmtype                string                                    `json:"vmtype"`
 	Vnfdetails            map[string]string                         `json:"vnfdetails"`
 	Vnfnics               []string                                  `json:"vnfnics"`
 	Zoneid                string                                    `json:"zoneid"`
@@ -8488,6 +8713,7 @@ type StopVirtualMachineResponseSecuritygroup struct {
 	Description         string                                        `json:"description"`
 	Domain              string                                        `json:"domain"`
 	Domainid            string                                        `json:"domainid"`
+	Domainpath          string                                        `json:"domainpath"`
 	Egressrule          []StopVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                        `json:"id"`
 	Ingressrule         []StopVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -8513,16 +8739,18 @@ type StopVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type StopVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *StopVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -8670,6 +8898,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	Cpuspeed              int                                                      `json:"cpuspeed"`
 	Cpuused               string                                                   `json:"cpuused"`
 	Created               string                                                   `json:"created"`
+	Deleteprotection      bool                                                     `json:"deleteprotection"`
 	Details               map[string]string                                        `json:"details"`
 	Diskioread            int64                                                    `json:"diskioread"`
 	Diskiowrite           int64                                                    `json:"diskiowrite"`
@@ -8681,6 +8910,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	Displayvm             bool                                                     `json:"displayvm"`
 	Domain                string                                                   `json:"domain"`
 	Domainid              string                                                   `json:"domainid"`
+	Domainpath            string                                                   `json:"domainpath"`
 	Forvirtualnetwork     bool                                                     `json:"forvirtualnetwork"`
 	Group                 string                                                   `json:"group"`
 	Groupid               string                                                   `json:"groupid"`
@@ -8694,6 +8924,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	Icon                  interface{}                                              `json:"icon"`
 	Id                    string                                                   `json:"id"`
 	Instancename          string                                                   `json:"instancename"`
+	Ipaddress             string                                                   `json:"ipaddress"`
 	Isdynamicallyscalable bool                                                     `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                                   `json:"isodisplaytext"`
 	Isoid                 string                                                   `json:"isoid"`
@@ -8731,6 +8962,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	State                 string                                                   `json:"state"`
 	Tags                  []Tags                                                   `json:"tags"`
 	Templatedisplaytext   string                                                   `json:"templatedisplaytext"`
+	Templateformat        string                                                   `json:"templateformat"`
 	Templateid            string                                                   `json:"templateid"`
 	Templatename          string                                                   `json:"templatename"`
 	Templatetype          string                                                   `json:"templatetype"`
@@ -8742,6 +8974,7 @@ type UpdateDefaultNicForVirtualMachineResponse struct {
 	Userid                string                                                   `json:"userid"`
 	Username              string                                                   `json:"username"`
 	Vgpu                  string                                                   `json:"vgpu"`
+	Vmtype                string                                                   `json:"vmtype"`
 	Vnfdetails            map[string]string                                        `json:"vnfdetails"`
 	Vnfnics               []string                                                 `json:"vnfnics"`
 	Zoneid                string                                                   `json:"zoneid"`
@@ -8753,6 +8986,7 @@ type UpdateDefaultNicForVirtualMachineResponseSecuritygroup struct {
 	Description         string                                                       `json:"description"`
 	Domain              string                                                       `json:"domain"`
 	Domainid            string                                                       `json:"domainid"`
+	Domainpath          string                                                       `json:"domainpath"`
 	Egressrule          []UpdateDefaultNicForVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                                       `json:"id"`
 	Ingressrule         []UpdateDefaultNicForVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -8778,16 +9012,18 @@ type UpdateDefaultNicForVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type UpdateDefaultNicForVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *UpdateDefaultNicForVirtualMachineResponse) UnmarshalJSON(b []byte) error {
@@ -8833,6 +9069,10 @@ func (p *UpdateVirtualMachineParams) toURLValues() url.Values {
 	if v, found := p.p["customid"]; found {
 		u.Set("customid", v.(string))
 	}
+	if v, found := p.p["deleteprotection"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("deleteprotection", vv)
+	}
 	if v, found := p.p["details"]; found {
 		m := v.(map[string]string)
 		for i, k := range getSortedKeysFromMap(m) {
@@ -8946,6 +9186,27 @@ func (p *UpdateVirtualMachineParams) GetCustomid() (string, bool) {
 	return value, ok
 }
 
+func (p *UpdateVirtualMachineParams) SetDeleteprotection(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["deleteprotection"] = v
+}
+
+func (p *UpdateVirtualMachineParams) ResetDeleteprotection() {
+	if p.p != nil && p.p["deleteprotection"] != nil {
+		delete(p.p, "deleteprotection")
+	}
+}
+
+func (p *UpdateVirtualMachineParams) GetDeleteprotection() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["deleteprotection"].(bool)
+	return value, ok
+}
+
 func (p *UpdateVirtualMachineParams) SetDetails(v map[string]string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -9354,6 +9615,7 @@ type UpdateVirtualMachineResponse struct {
 	Cpuspeed              int                                         `json:"cpuspeed"`
 	Cpuused               string                                      `json:"cpuused"`
 	Created               string                                      `json:"created"`
+	Deleteprotection      bool                                        `json:"deleteprotection"`
 	Details               map[string]string                           `json:"details"`
 	Diskioread            int64                                       `json:"diskioread"`
 	Diskiowrite           int64                                       `json:"diskiowrite"`
@@ -9365,6 +9627,7 @@ type UpdateVirtualMachineResponse struct {
 	Displayvm             bool                                        `json:"displayvm"`
 	Domain                string                                      `json:"domain"`
 	Domainid              string                                      `json:"domainid"`
+	Domainpath            string                                      `json:"domainpath"`
 	Forvirtualnetwork     bool                                        `json:"forvirtualnetwork"`
 	Group                 string                                      `json:"group"`
 	Groupid               string                                      `json:"groupid"`
@@ -9378,6 +9641,7 @@ type UpdateVirtualMachineResponse struct {
 	Icon                  interface{}                                 `json:"icon"`
 	Id                    string                                      `json:"id"`
 	Instancename          string                                      `json:"instancename"`
+	Ipaddress             string                                      `json:"ipaddress"`
 	Isdynamicallyscalable bool                                        `json:"isdynamicallyscalable"`
 	Isodisplaytext        string                                      `json:"isodisplaytext"`
 	Isoid                 string                                      `json:"isoid"`
@@ -9415,6 +9679,7 @@ type UpdateVirtualMachineResponse struct {
 	State                 string                                      `json:"state"`
 	Tags                  []Tags                                      `json:"tags"`
 	Templatedisplaytext   string                                      `json:"templatedisplaytext"`
+	Templateformat        string                                      `json:"templateformat"`
 	Templateid            string                                      `json:"templateid"`
 	Templatename          string                                      `json:"templatename"`
 	Templatetype          string                                      `json:"templatetype"`
@@ -9426,6 +9691,7 @@ type UpdateVirtualMachineResponse struct {
 	Userid                string                                      `json:"userid"`
 	Username              string                                      `json:"username"`
 	Vgpu                  string                                      `json:"vgpu"`
+	Vmtype                string                                      `json:"vmtype"`
 	Vnfdetails            map[string]string                           `json:"vnfdetails"`
 	Vnfnics               []string                                    `json:"vnfnics"`
 	Zoneid                string                                      `json:"zoneid"`
@@ -9437,6 +9703,7 @@ type UpdateVirtualMachineResponseSecuritygroup struct {
 	Description         string                                          `json:"description"`
 	Domain              string                                          `json:"domain"`
 	Domainid            string                                          `json:"domainid"`
+	Domainpath          string                                          `json:"domainpath"`
 	Egressrule          []UpdateVirtualMachineResponseSecuritygroupRule `json:"egressrule"`
 	Id                  string                                          `json:"id"`
 	Ingressrule         []UpdateVirtualMachineResponseSecuritygroupRule `json:"ingressrule"`
@@ -9462,16 +9729,18 @@ type UpdateVirtualMachineResponseSecuritygroupRule struct {
 }
 
 type UpdateVirtualMachineResponseAffinitygroup struct {
-	Account           string   `json:"account"`
-	Description       string   `json:"description"`
-	Domain            string   `json:"domain"`
-	Domainid          string   `json:"domainid"`
-	Id                string   `json:"id"`
-	Name              string   `json:"name"`
-	Project           string   `json:"project"`
-	Projectid         string   `json:"projectid"`
-	Type              string   `json:"type"`
-	VirtualmachineIds []string `json:"virtualmachineIds"`
+	Account            string   `json:"account"`
+	Dedicatedresources []string `json:"dedicatedresources"`
+	Description        string   `json:"description"`
+	Domain             string   `json:"domain"`
+	Domainid           string   `json:"domainid"`
+	Domainpath         string   `json:"domainpath"`
+	Id                 string   `json:"id"`
+	Name               string   `json:"name"`
+	Project            string   `json:"project"`
+	Projectid          string   `json:"projectid"`
+	Type               string   `json:"type"`
+	VirtualmachineIds  []string `json:"virtualmachineIds"`
 }
 
 func (r *UpdateVirtualMachineResponse) UnmarshalJSON(b []byte) error {
diff --git a/cloudstack/VolumeService.go b/cloudstack/VolumeService.go
index 65ce826..281e52d 100644
--- a/cloudstack/VolumeService.go
+++ b/cloudstack/VolumeService.go
@@ -203,74 +203,79 @@ func (s *VolumeService) AttachVolume(p *AttachVolumeParams) (*AttachVolumeRespon
 }
 
 type AttachVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type CreateVolumeParams struct {
@@ -645,74 +650,79 @@ func (s *VolumeService) CreateVolume(p *CreateVolumeParams) (*CreateVolumeRespon
 }
 
 type CreateVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type DeleteVolumeParams struct {
@@ -915,74 +925,79 @@ func (s *VolumeService) DestroyVolume(p *DestroyVolumeParams) (*DestroyVolumeRes
 }
 
 type DestroyVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type DetachVolumeParams struct {
@@ -1114,74 +1129,79 @@ func (s *VolumeService) DetachVolume(p *DetachVolumeParams) (*DetachVolumeRespon
 }
 
 type DetachVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type ExtractVolumeParams struct {
@@ -1860,6 +1880,10 @@ func (p *ListVolumesParams) toURLValues() url.Values {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("ids", vv)
 	}
+	if v, found := p.p["isencrypted"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("isencrypted", vv)
+	}
 	if v, found := p.p["isrecursive"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("isrecursive", vv)
@@ -1896,6 +1920,9 @@ func (p *ListVolumesParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("retrieveonlyresourcecount", vv)
 	}
+	if v, found := p.p["serviceofferingid"]; found {
+		u.Set("serviceofferingid", v.(string))
+	}
 	if v, found := p.p["state"]; found {
 		u.Set("state", v.(string))
 	}
@@ -2089,6 +2116,27 @@ func (p *ListVolumesParams) GetIds() ([]string, bool) {
 	return value, ok
 }
 
+func (p *ListVolumesParams) SetIsencrypted(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["isencrypted"] = v
+}
+
+func (p *ListVolumesParams) ResetIsencrypted() {
+	if p.p != nil && p.p["isencrypted"] != nil {
+		delete(p.p, "isencrypted")
+	}
+}
+
+func (p *ListVolumesParams) GetIsencrypted() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["isencrypted"].(bool)
+	return value, ok
+}
+
 func (p *ListVolumesParams) SetIsrecursive(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2299,6 +2347,27 @@ func (p *ListVolumesParams) GetRetrieveonlyresourcecount() (bool, bool) {
 	return value, ok
 }
 
+func (p *ListVolumesParams) SetServiceofferingid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["serviceofferingid"] = v
+}
+
+func (p *ListVolumesParams) ResetServiceofferingid() {
+	if p.p != nil && p.p["serviceofferingid"] != nil {
+		delete(p.p, "serviceofferingid")
+	}
+}
+
+func (p *ListVolumesParams) GetServiceofferingid() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["serviceofferingid"].(string)
+	return value, ok
+}
+
 func (p *ListVolumesParams) SetState(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -2537,74 +2606,79 @@ type ListVolumesResponse struct {
 }
 
 type Volume struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type ListVolumesMetricsParams struct {
@@ -2642,6 +2716,10 @@ func (p *ListVolumesMetricsParams) toURLValues() url.Values {
 		vv := strings.Join(v.([]string), ",")
 		u.Set("ids", vv)
 	}
+	if v, found := p.p["isencrypted"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("isencrypted", vv)
+	}
 	if v, found := p.p["isrecursive"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("isrecursive", vv)
@@ -2678,6 +2756,9 @@ func (p *ListVolumesMetricsParams) toURLValues() url.Values {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("retrieveonlyresourcecount", vv)
 	}
+	if v, found := p.p["serviceofferingid"]; found {
+		u.Set("serviceofferingid", v.(string))
+	}
 	if v, found := p.p["state"]; found {
 		u.Set("state", v.(string))
 	}
@@ -2871,6 +2952,27 @@ func (p *ListVolumesMetricsParams) GetIds() ([]string, bool) {
 	return value, ok
 }
 
+func (p *ListVolumesMetricsParams) SetIsencrypted(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["isencrypted"] = v
+}
+
+func (p *ListVolumesMetricsParams) ResetIsencrypted() {
+	if p.p != nil && p.p["isencrypted"] != nil {
+		delete(p.p, "isencrypted")
+	}
+}
+
+func (p *ListVolumesMetricsParams) GetIsencrypted() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["isencrypted"].(bool)
+	return value, ok
+}
+
 func (p *ListVolumesMetricsParams) SetIsrecursive(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -3081,6 +3183,27 @@ func (p *ListVolumesMetricsParams) GetRetrieveonlyresourcecount() (bool, bool) {
 	return value, ok
 }
 
+func (p *ListVolumesMetricsParams) SetServiceofferingid(v string) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["serviceofferingid"] = v
+}
+
+func (p *ListVolumesMetricsParams) ResetServiceofferingid() {
+	if p.p != nil && p.p["serviceofferingid"] != nil {
+		delete(p.p, "serviceofferingid")
+	}
+}
+
+func (p *ListVolumesMetricsParams) GetServiceofferingid() (string, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["serviceofferingid"].(string)
+	return value, ok
+}
+
 func (p *ListVolumesMetricsParams) SetState(v string) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -3319,76 +3442,81 @@ type ListVolumesMetricsResponse struct {
 }
 
 type VolumesMetric struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskiopstotal              int64  `json:"diskiopstotal"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Sizegb                     string `json:"sizegb"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskiopstotal              int64             `json:"diskiopstotal"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Sizegb                     string            `json:"sizegb"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type MigrateVolumeParams struct {
@@ -3546,74 +3674,79 @@ func (s *VolumeService) MigrateVolume(p *MigrateVolumeParams) (*MigrateVolumeRes
 }
 
 type MigrateVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type RecoverVolumeParams struct {
@@ -3677,74 +3810,79 @@ func (s *VolumeService) RecoverVolume(p *RecoverVolumeParams) (*RecoverVolumeRes
 }
 
 type RecoverVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type ResizeVolumeParams struct {
@@ -3952,74 +4090,79 @@ func (s *VolumeService) ResizeVolume(p *ResizeVolumeParams) (*ResizeVolumeRespon
 }
 
 type ResizeVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type UpdateVolumeParams struct {
@@ -4037,6 +4180,10 @@ func (p *UpdateVolumeParams) toURLValues() url.Values {
 	if v, found := p.p["customid"]; found {
 		u.Set("customid", v.(string))
 	}
+	if v, found := p.p["deleteprotection"]; found {
+		vv := strconv.FormatBool(v.(bool))
+		u.Set("deleteprotection", vv)
+	}
 	if v, found := p.p["displayvolume"]; found {
 		vv := strconv.FormatBool(v.(bool))
 		u.Set("displayvolume", vv)
@@ -4101,6 +4248,27 @@ func (p *UpdateVolumeParams) GetCustomid() (string, bool) {
 	return value, ok
 }
 
+func (p *UpdateVolumeParams) SetDeleteprotection(v bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	p.p["deleteprotection"] = v
+}
+
+func (p *UpdateVolumeParams) ResetDeleteprotection() {
+	if p.p != nil && p.p["deleteprotection"] != nil {
+		delete(p.p, "deleteprotection")
+	}
+}
+
+func (p *UpdateVolumeParams) GetDeleteprotection() (bool, bool) {
+	if p.p == nil {
+		p.p = make(map[string]interface{})
+	}
+	value, ok := p.p["deleteprotection"].(bool)
+	return value, ok
+}
+
 func (p *UpdateVolumeParams) SetDisplayvolume(v bool) {
 	if p.p == nil {
 		p.p = make(map[string]interface{})
@@ -4271,74 +4439,79 @@ func (s *VolumeService) UpdateVolume(p *UpdateVolumeParams) (*UpdateVolumeRespon
 }
 
 type UpdateVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type UploadVolumeParams struct {
@@ -4641,74 +4814,79 @@ func (s *VolumeService) UploadVolume(p *UploadVolumeParams) (*UploadVolumeRespon
 }
 
 type UploadVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
 
 type ChangeOfferingForVolumeParams struct {
@@ -4942,72 +5120,77 @@ func (s *VolumeService) ChangeOfferingForVolume(p *ChangeOfferingForVolumeParams
 }
 
 type ChangeOfferingForVolumeResponse struct {
-	Account                    string `json:"account"`
-	Attached                   string `json:"attached"`
-	Chaininfo                  string `json:"chaininfo"`
-	Clusterid                  string `json:"clusterid"`
-	Clustername                string `json:"clustername"`
-	Created                    string `json:"created"`
-	Destroyed                  bool   `json:"destroyed"`
-	Deviceid                   int64  `json:"deviceid"`
-	DiskBytesReadRate          int64  `json:"diskBytesReadRate"`
-	DiskBytesWriteRate         int64  `json:"diskBytesWriteRate"`
-	DiskIopsReadRate           int64  `json:"diskIopsReadRate"`
-	DiskIopsWriteRate          int64  `json:"diskIopsWriteRate"`
-	Diskioread                 int64  `json:"diskioread"`
-	Diskiowrite                int64  `json:"diskiowrite"`
-	Diskkbsread                int64  `json:"diskkbsread"`
-	Diskkbswrite               int64  `json:"diskkbswrite"`
-	Diskofferingdisplaytext    string `json:"diskofferingdisplaytext"`
-	Diskofferingid             string `json:"diskofferingid"`
-	Diskofferingname           string `json:"diskofferingname"`
-	Displayvolume              bool   `json:"displayvolume"`
-	Domain                     string `json:"domain"`
-	Domainid                   string `json:"domainid"`
-	Externaluuid               string `json:"externaluuid"`
-	Hasannotations             bool   `json:"hasannotations"`
-	Hypervisor                 string `json:"hypervisor"`
-	Id                         string `json:"id"`
-	Isextractable              bool   `json:"isextractable"`
-	Isodisplaytext             string `json:"isodisplaytext"`
-	Isoid                      string `json:"isoid"`
-	Isoname                    string `json:"isoname"`
-	JobID                      string `json:"jobid"`
-	Jobstatus                  int    `json:"jobstatus"`
-	Maxiops                    int64  `json:"maxiops"`
-	Miniops                    int64  `json:"miniops"`
-	Name                       string `json:"name"`
-	Path                       string `json:"path"`
-	Physicalsize               int64  `json:"physicalsize"`
-	Podid                      string `json:"podid"`
-	Podname                    string `json:"podname"`
-	Project                    string `json:"project"`
-	Projectid                  string `json:"projectid"`
-	Provisioningtype           string `json:"provisioningtype"`
-	Quiescevm                  bool   `json:"quiescevm"`
-	Serviceofferingdisplaytext string `json:"serviceofferingdisplaytext"`
-	Serviceofferingid          string `json:"serviceofferingid"`
-	Serviceofferingname        string `json:"serviceofferingname"`
-	Size                       int64  `json:"size"`
-	Snapshotid                 string `json:"snapshotid"`
-	State                      string `json:"state"`
-	Status                     string `json:"status"`
-	Storage                    string `json:"storage"`
-	Storageid                  string `json:"storageid"`
-	Storagetype                string `json:"storagetype"`
-	Supportsstoragesnapshot    bool   `json:"supportsstoragesnapshot"`
-	Tags                       []Tags `json:"tags"`
-	Templatedisplaytext        string `json:"templatedisplaytext"`
-	Templateid                 string `json:"templateid"`
-	Templatename               string `json:"templatename"`
-	Type                       string `json:"type"`
-	Utilization                string `json:"utilization"`
-	Virtualmachineid           string `json:"virtualmachineid"`
-	Virtualsize                int64  `json:"virtualsize"`
-	Vmdisplayname              string `json:"vmdisplayname"`
-	Vmname                     string `json:"vmname"`
-	Vmstate                    string `json:"vmstate"`
-	Vmtype                     string `json:"vmtype"`
-	Zoneid                     string `json:"zoneid"`
-	Zonename                   string `json:"zonename"`
+	Account                    string            `json:"account"`
+	Attached                   string            `json:"attached"`
+	Chaininfo                  string            `json:"chaininfo"`
+	Clusterid                  string            `json:"clusterid"`
+	Clustername                string            `json:"clustername"`
+	Created                    string            `json:"created"`
+	Deleteprotection           bool              `json:"deleteprotection"`
+	Destroyed                  bool              `json:"destroyed"`
+	Deviceid                   int64             `json:"deviceid"`
+	DiskBytesReadRate          int64             `json:"diskBytesReadRate"`
+	DiskBytesWriteRate         int64             `json:"diskBytesWriteRate"`
+	DiskIopsReadRate           int64             `json:"diskIopsReadRate"`
+	DiskIopsWriteRate          int64             `json:"diskIopsWriteRate"`
+	Diskioread                 int64             `json:"diskioread"`
+	Diskiowrite                int64             `json:"diskiowrite"`
+	Diskkbsread                int64             `json:"diskkbsread"`
+	Diskkbswrite               int64             `json:"diskkbswrite"`
+	Diskofferingdisplaytext    string            `json:"diskofferingdisplaytext"`
+	Diskofferingid             string            `json:"diskofferingid"`
+	Diskofferingname           string            `json:"diskofferingname"`
+	Displayvolume              bool              `json:"displayvolume"`
+	Domain                     string            `json:"domain"`
+	Domainid                   string            `json:"domainid"`
+	Domainpath                 string            `json:"domainpath"`
+	Encryptformat              string            `json:"encryptformat"`
+	Externaluuid               string            `json:"externaluuid"`
+	Hasannotations             bool              `json:"hasannotations"`
+	Hypervisor                 string            `json:"hypervisor"`
+	Id                         string            `json:"id"`
+	Isextractable              bool              `json:"isextractable"`
+	Isodisplaytext             string            `json:"isodisplaytext"`
+	Isoid                      string            `json:"isoid"`
+	Isoname                    string            `json:"isoname"`
+	JobID                      string            `json:"jobid"`
+	Jobstatus                  int               `json:"jobstatus"`
+	Maxiops                    int64             `json:"maxiops"`
+	Miniops                    int64             `json:"miniops"`
+	Name                       string            `json:"name"`
+	Path                       string            `json:"path"`
+	Physicalsize               int64             `json:"physicalsize"`
+	Podid                      string            `json:"podid"`
+	Podname                    string            `json:"podname"`
+	Project                    string            `json:"project"`
+	Projectid                  string            `json:"projectid"`
+	Provisioningtype           string            `json:"provisioningtype"`
+	Quiescevm                  bool              `json:"quiescevm"`
+	Serviceofferingdisplaytext string            `json:"serviceofferingdisplaytext"`
+	Serviceofferingid          string            `json:"serviceofferingid"`
+	Serviceofferingname        string            `json:"serviceofferingname"`
+	Size                       int64             `json:"size"`
+	Snapshotid                 string            `json:"snapshotid"`
+	State                      string            `json:"state"`
+	Status                     string            `json:"status"`
+	Storage                    string            `json:"storage"`
+	Storageid                  string            `json:"storageid"`
+	Storagetype                string            `json:"storagetype"`
+	Supportsstoragesnapshot    bool              `json:"supportsstoragesnapshot"`
+	Tags                       []Tags            `json:"tags"`
+	Templatedisplaytext        string            `json:"templatedisplaytext"`
+	Templateid                 string            `json:"templateid"`
+	Templatename               string            `json:"templatename"`
+	Type                       string            `json:"type"`
+	Utilization                string            `json:"utilization"`
+	Virtualmachineid           string            `json:"virtualmachineid"`
+	Virtualsize                int64             `json:"virtualsize"`
+	Vmdisplayname              string            `json:"vmdisplayname"`
+	Vmname                     string            `json:"vmname"`
+	Vmstate                    string            `json:"vmstate"`
+	Vmtype                     string            `json:"vmtype"`
+	Volumecheckresult          map[string]string `json:"volumecheckresult"`
+	Volumerepairresult         map[string]string `json:"volumerepairresult"`
+	Zoneid                     string            `json:"zoneid"`
+	Zonename                   string            `json:"zonename"`
 }
diff --git a/cloudstack/ZoneService.go b/cloudstack/ZoneService.go
index 954c5c3..24c1452 100644
--- a/cloudstack/ZoneService.go
+++ b/cloudstack/ZoneService.go
@@ -469,6 +469,7 @@ func (s *ZoneService) CreateZone(p *CreateZoneParams) (*CreateZoneResponse, erro
 type CreateZoneResponse struct {
 	Allocationstate              string                       `json:"allocationstate"`
 	Allowuserspecifyvrmtu        bool                         `json:"allowuserspecifyvrmtu"`
+	Asnrange                     string                       `json:"asnrange"`
 	Capacity                     []CreateZoneResponseCapacity `json:"capacity"`
 	Description                  string                       `json:"description"`
 	Dhcpprovider                 string                       `json:"dhcpprovider"`
@@ -486,6 +487,8 @@ type CreateZoneResponse struct {
 	Internaldns2                 string                       `json:"internaldns2"`
 	Ip6dns1                      string                       `json:"ip6dns1"`
 	Ip6dns2                      string                       `json:"ip6dns2"`
+	Ismultiarch                  bool                         `json:"ismultiarch"`
+	Isnsxenabled                 bool                         `json:"isnsxenabled"`
 	JobID                        string                       `json:"jobid"`
 	Jobstatus                    int                          `json:"jobstatus"`
 	Localstorageenabled          bool                         `json:"localstorageenabled"`
@@ -510,6 +513,7 @@ type CreateZoneResponseCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -1750,6 +1754,7 @@ type ListZonesResponse struct {
 type Zone struct {
 	Allocationstate              string            `json:"allocationstate"`
 	Allowuserspecifyvrmtu        bool              `json:"allowuserspecifyvrmtu"`
+	Asnrange                     string            `json:"asnrange"`
 	Capacity                     []ZoneCapacity    `json:"capacity"`
 	Description                  string            `json:"description"`
 	Dhcpprovider                 string            `json:"dhcpprovider"`
@@ -1767,6 +1772,8 @@ type Zone struct {
 	Internaldns2                 string            `json:"internaldns2"`
 	Ip6dns1                      string            `json:"ip6dns1"`
 	Ip6dns2                      string            `json:"ip6dns2"`
+	Ismultiarch                  bool              `json:"ismultiarch"`
+	Isnsxenabled                 bool              `json:"isnsxenabled"`
 	JobID                        string            `json:"jobid"`
 	Jobstatus                    int               `json:"jobstatus"`
 	Localstorageenabled          bool              `json:"localstorageenabled"`
@@ -1791,6 +1798,7 @@ type ZoneCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -2220,6 +2228,7 @@ type ListZonesMetricsResponse struct {
 type ZonesMetric struct {
 	Allocationstate                 string                `json:"allocationstate"`
 	Allowuserspecifyvrmtu           bool                  `json:"allowuserspecifyvrmtu"`
+	Asnrange                        string                `json:"asnrange"`
 	Capacity                        []ZonesMetricCapacity `json:"capacity"`
 	Clusters                        string                `json:"clusters"`
 	Cpuallocated                    string                `json:"cpuallocated"`
@@ -2246,6 +2255,8 @@ type ZonesMetric struct {
 	Internaldns2                    string                `json:"internaldns2"`
 	Ip6dns1                         string                `json:"ip6dns1"`
 	Ip6dns2                         string                `json:"ip6dns2"`
+	Ismultiarch                     bool                  `json:"ismultiarch"`
+	Isnsxenabled                    bool                  `json:"isnsxenabled"`
 	JobID                           string                `json:"jobid"`
 	Jobstatus                       int                   `json:"jobstatus"`
 	Localstorageenabled             bool                  `json:"localstorageenabled"`
@@ -2279,6 +2290,7 @@ type ZonesMetricCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
@@ -2821,6 +2833,7 @@ func (s *ZoneService) UpdateZone(p *UpdateZoneParams) (*UpdateZoneResponse, erro
 type UpdateZoneResponse struct {
 	Allocationstate              string                       `json:"allocationstate"`
 	Allowuserspecifyvrmtu        bool                         `json:"allowuserspecifyvrmtu"`
+	Asnrange                     string                       `json:"asnrange"`
 	Capacity                     []UpdateZoneResponseCapacity `json:"capacity"`
 	Description                  string                       `json:"description"`
 	Dhcpprovider                 string                       `json:"dhcpprovider"`
@@ -2838,6 +2851,8 @@ type UpdateZoneResponse struct {
 	Internaldns2                 string                       `json:"internaldns2"`
 	Ip6dns1                      string                       `json:"ip6dns1"`
 	Ip6dns2                      string                       `json:"ip6dns2"`
+	Ismultiarch                  bool                         `json:"ismultiarch"`
+	Isnsxenabled                 bool                         `json:"isnsxenabled"`
 	JobID                        string                       `json:"jobid"`
 	Jobstatus                    int                          `json:"jobstatus"`
 	Localstorageenabled          bool                         `json:"localstorageenabled"`
@@ -2862,6 +2877,7 @@ type UpdateZoneResponseCapacity struct {
 	Percentused       string `json:"percentused"`
 	Podid             string `json:"podid"`
 	Podname           string `json:"podname"`
+	Tag               string `json:"tag"`
 	Type              int    `json:"type"`
 	Zoneid            string `json:"zoneid"`
 	Zonename          string `json:"zonename"`
diff --git a/generate/listApis.json b/generate/listApis.json
index bbc5c76..48b5266 100644
--- a/generate/listApis.json
+++ b/generate/listApis.json
@@ -1,62 +1,26 @@
 {
   "api": [
     {
-      "description": "Lists the resource icon for the specified resource(s)",
-      "isasync": false,
-      "name": "listResourceIcon",
+      "description": "Creates VPC offering",
+      "isasync": true,
+      "name": "createVPCOffering",
       "params": [
         {
-          "description": "type of the resource",
+          "description": "true if network offering is meant to be used for NSX, false otherwise.",
           "length": 255,
-          "name": "resourcetype",
-          "required": true,
-          "type": "string"
+          "name": "fornsx",
+          "required": false,
+          "since": "4.20.0",
+          "type": "boolean"
         },
         {
-          "description": "list of resources to upload the icon/image for",
+          "description": "the ID of the service offering for the VPC router appliance",
           "length": 255,
-          "name": "resourceids",
-          "required": true,
-          "type": "list"
-        }
-      ],
-      "related": "",
-      "response": [
-        {
-          "description": "id of the resource",
-          "name": "resourceid",
-          "type": "string"
-        },
-        {
-          "description": "base64 representation of resource icon",
-          "name": "base64image",
-          "type": "string"
-        },
-        {},
-        {},
-        {
-          "description": "the UUID of the latest async job acting on this object",
-          "name": "jobid",
-          "type": "string"
-        },
-        {
-          "description": "resource type",
-          "name": "resourcetype",
-          "type": "resourceobjecttype"
+          "name": "serviceofferingid",
+          "related": "createServiceOffering,updateServiceOffering,listServiceOfferings",
+          "required": false,
+          "type": "uuid"
         },
-        {
-          "description": "the current status of the latest async job acting on this object",
-          "name": "jobstatus",
-          "type": "integer"
-        }
-      ],
-      "since": "4.16.0.0"
-    },
-    {
-      "description": "Creates VPC offering",
-      "isasync": true,
-      "name": "createVPCOffering",
-      "params": [
         {
           "description": "the display text of the vpc offering, defaults to the 'name'",
           "length": 255,
@@ -65,27 +29,26 @@
           "type": "string"
         },
         {
-          "description": "desired service capabilities as part of vpc offering",
+          "description": "the ID of the containing domain(s), null for public offerings",
           "length": 255,
-          "name": "servicecapabilitylist",
+          "name": "domainid",
+          "related": "createDomain,listDomainChildren,listDomains,listDomains,updateDomain,moveDomain",
           "required": false,
-          "since": "4.4",
-          "type": "map"
+          "type": "list"
         },
         {
-          "description": "provider to service mapping. If not specified, the provider for the service will be mapped to the default provider on the physical network",
+          "description": "The internet protocol of the offering. Options are ipv4 and dualstack. Default is ipv4. dualstack will create an offering that supports both IPv4 and IPv6",
           "length": 255,
-          "name": "serviceproviderlist",
+          "name": "internetprotocol",
           "required": false,
-          "type": "map"
+          "since": "4.17.0",
+          "type": "string"
         },
         {
-          "description": "the ID of the containing zone(s), null for public offerings",
+          "description": "services supported by the vpc offering",
           "length": 255,
-          "name": "zoneid",
-          "related": "createZone,updateZone,listZones,listZones",
+          "name": "supportedservices",
           "required": false,
-          "since": "4.13",
           "type": "list"
         },
         {
@@ -104,165 +67,99 @@
           "type": "boolean"
         },
         {
-          "description": "the ID of the containing domain(s), null for public offerings",
+          "description": "the ID of the containing zone(s), null for public offerings",
           "length": 255,
-          "name": "domainid",
-          "related": "createDomain,listDomainChildren,listDomains,listDomains,updateDomain,moveDomain",
+          "name": "zoneid",
+          "related": "createZone,updateZone,listZones,listZones",
           "required": false,
+          "since": "4.13",
           "type": "list"
         },
         {
-          "description": "The internet protocol of the offering. Options are ipv4 and dualstack. Default is ipv4. dualstack will create an offering that supports both IPv4 and IPv6",
+          "description": "Indicates the mode with which the network will operate. Valid option: NATTED or ROUTED",
           "length": 255,
-          "name": "internetprotocol",
+          "name": "networkmode",
           "required": false,
-          "since": "4.17.0",
+          "since": "4.20.0",
           "type": "string"
         },
         {
-          "description": "the ID of the service offering for the VPC router appliance",
+          "description": "the routing mode for the VPC offering. Supported types are: Static or Dynamic.",
           "length": 255,
-          "name": "serviceofferingid",
-          "related": "createServiceOffering,updateServiceOffering,listServiceOfferings",
+          "name": "routingmode",
           "required": false,
-          "type": "uuid"
+          "since": "4.20.0",
+          "type": "string"
         },
         {
-          "description": "services supported by the vpc offering",
+          "description": "true if network offering for NSX VPC offering supports Load balancer service.",
           "length": 255,
-          "name": "supportedservices",
-          "required": true,
-          "type": "list"
-        }
-      ],
-      "related": "updateVPCOffering,listVPCOfferings",
-      "response": [
-        {
-          "description": "the UUID of the latest async job acting on this object",
-          "name": "jobid",
-          "type": "string"
+          "name": "nsxsupportlb",
+          "required": false,
+          "since": "4.20.0",
+          "type": "boolean"
         },
         {
-          "description": "an alternate display text of the vpc offering.",
-          "name": "displaytext",
-          "type": "string"
+          "description": "true if the VPC offering supports choosing AS number",
+          "length": 255,
+          "name": "specifyasnumber",
+          "required": false,
+          "since": "4.20.0",
+          "type": "boolean"
         },
         {
-          "description": "the list of supported services",
-          "name": "service",
-          "response": [
-            {
-              "description": "the list of capabilities",
-              "name": "capability",
-              "response": [
-                {
-                  "description": "the capability value",
-                  "name": "value",
-                  "type": "string"
-                },
-                {
-                  "description": "the capability name",
-                  "name": "name",
-                  "type": "string"
-                },
-                {
-                  "description": "can this service capability value can be choosable while creatine network offerings",
-                  "name": "canchooseservicecapability",
-                  "type": "boolean"
-                }
-              ],
-              "type": "list"
-            },
-            {
-              "description": "the service name",
-              "name": "name",
-              "type": "string"
-            },
-            {
-              "description": "the service provider name",
-              "name": "provider",
-              "response": [
-                {
-                  "description": "true if individual services can be enabled/disabled",
-                  "name": "canenableindividualservice",
-                  "type": "boolean"
-                },
-                {
-                  "description": "the destination physical network",
-                  "name": "destinationphysicalnetworkid",
-                  "type": "string"
-                },
-                {
-                  "description": "the physical network this belongs to",
-                  "name": "physicalnetworkid",
-                  "type": "string"
-                },
-                {
-                  "description": "state of the network provider",
-                  "name": "state",
-                  "type": "string"
-                },
-                {
-                  "description": "the provider name",
-                  "name": "name",
-                  "type": "string"
-                },
-                {
-                  "description": "uuid of the network provider",
-                  "name": "id",
-                  "type": "string"
-                },
-                {
-                  "description": "services for this provider",
-                  "name": "servicelist",
-                  "type": "list"
-                }
-              ],
-              "type": "list"
-            }
-          ],
-          "type": "list"
+          "description": "desired service capabilities as part of vpc offering",
+          "length": 255,
+          "name": "servicecapabilitylist",
+          "required": false,
+          "since": "4.4",
+          "type": "map"
         },
-        {},
         {
-          "description": " indicates if the vpc offering supports distributed router for one-hop forwarding",
-          "name": "distributedvpcrouter",
-          "type": "boolean"
-        },
+          "description": "provider to service mapping. If not specified, the provider for the service will be mapped to the default provider on the physical network",
+          "length": 255,
+          "name": "serviceproviderlist",
+          "required": false,
+          "type": "map"
+        }
+      ],
+      "related": "updateVPCOffering,listVPCOfferings",
+      "response": [
         {
-          "description": "the zone ID(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
-          "name": "zoneid",
+          "description": "the routing mode for the network offering, supported types are Static or Dynamic.",
+          "name": "routingmode",
           "type": "string"
         },
+        {},
         {
-          "description": "the domain name(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
-          "name": "domain",
-          "type": "string"
+          "description": "true if network offering supports choosing AS numbers",
+          "name": "specifyasnumber",
+          "type": "boolean"
         },
         {
-          "description": "the date this vpc offering was created",
-          "name": "created",
-          "type": "date"
+          "description": "the current status of the latest async job acting on this object",
+          "name": "jobstatus",
+          "type": "integer"
         },
         {
-          "description": "the zone name(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
-          "name": "zone",
+          "description": "an alternate display text of the vpc offering.",
+          "name": "displaytext",
           "type": "string"
         },
         {
-          "description": "the id of the vpc offering",
-          "name": "id",
+          "description": "Mode in which the network will operate. The valid values are NATTED and ROUTED",
+          "name": "networkmode",
           "type": "string"
         },
         {
-          "description": "the name of the vpc offering",
-          "name": "name",
-          "type": "string"
+          "description": "true if vpc offering is default, false otherwise",
+          "name": "isdefault",
+          "type": "boolean"
         },
         {
-          "description": "the domain ID(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
-          "name": "domainid",
-          "type": "string"
+          "description": "indicated if the offering can support region level vpc",
+          "name": "supportsregionLevelvpc",
+          "type": "boolean"
         },
         {
           "description": "state of the vpc offering. Can be Disabled/Enabled",
@@ -270,18 +167,8 @@
           "type": "string"
         },
         {
-          "description": "the current status of the latest async job acting on this object",
-          "name": "jobstatus",
-          "type": "integer"
-        },
-        {
-          "description": "true if vpc offering is default, false otherwise",
-          "name": "isdefault",
-          "type": "boolean"
-        },
-        {
-          "description": " indicated if the offering can support region level vpc",
-          "name": "supportsregionLevelvpc",
+          "description": "true if vpc offering can be used by NSX networks only",
+          "name": "fornsx",
           "type": "boolean"
         },
         {
@@ -289,243 +176,128 @@
           "name": "internetprotocol",
           "type": "string"
         },
-        {}
-      ]
-    },
-    {
-      "description": "Creates a new Pod.",
-      "isasync": false,
-      "name": "createPod",
-      "params": [
         {
-          "description": "the ending IP address for the Pod",
-          "length": 255,
-          "name": "endip",
-          "required": false,
+          "description": "the name of the vpc offering",
+          "name": "name",
           "type": "string"
         },
         {
-          "description": "the Zone ID in which the Pod will be created",
-          "length": 255,
-          "name": "zoneid",
-          "related": "createZone,updateZone,listZones,listZones",
-          "required": true,
-          "type": "uuid"
+          "description": " indicates if the vpc offering supports distributed router for one-hop forwarding",
+          "name": "distributedvpcrouter",
+          "type": "boolean"
         },
         {
-          "description": "the starting IP address for the Pod",
-          "length": 255,
-          "name": "startip",
-          "required": false,
+          "description": "the domain name(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
+          "name": "domain",
           "type": "string"
         },
         {
-          "description": "the netmask for the Pod",
-          "length": 255,
-          "name": "netmask",
-          "required": false,
+          "description": "the zone ID(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
+          "name": "zoneid",
           "type": "string"
         },
         {
-          "description": "the gateway for the Pod",
-          "length": 255,
-          "name": "gateway",
-          "required": false,
+          "description": "the zone name(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
+          "name": "zone",
           "type": "string"
         },
+        {},
         {
-          "description": "Allocation state of this Pod for allocation of new resources",
-          "length": 255,
-          "name": "allocationstate",
-          "required": false,
+          "description": "the id of the vpc offering",
+          "name": "id",
           "type": "string"
         },
         {
-          "description": "the name of the Pod",
-          "length": 255,
-          "name": "name",
-          "required": true,
+          "description": "the domain ID(s) this disk offering belongs to. Ignore this information as it is not currently applicable.",
+          "name": "domainid",
           "type": "string"
-        }
-      ],
-      "related": "listPods,updatePod,createManagementNetworkIpRange",
-      "response": [
+        },
         {
-          "description": "the capacity of the Pod",
-          "name": "capacity",
+          "description": "the list of supported services",
+          "name": "service",
           "response": [
             {
-              "description": "the capacity type",
-              "name": "type",
-              "type": "short"
-            },
-            {
-              "description": "the percentage of capacity currently in use",
-              "name": "percentused",
-              "type": "string"
-            },
-            {
-              "description": "the Zone name",
-              "name": "zonename",
-              "type": "string"
-            },
-            {
-              "description": "the total capacity available",
-              "name": "capacitytotal",
-              "type": "long"
-            },
-            {
-              "description": "the Pod ID",
-              "name": "podid",
-              "type": "string"
-            },
-            {
-              "description": "the Pod name",
-              "name": "podname",
-              "type": "string"
-            },
-            {
-              "description": "the capacity currently in allocated",
-              "name": "capacityallocated",
-              "type": "long"
-            },
-            {
-              "description": "the Cluster ID",
-              "name": "clusterid",
-              "type": "string"
-            },
-            {
-              "description": "the capacity name",
+              "description": "the service name",
               "name": "name",
               "type": "string"
             },
             {
-              "description": "the capacity currently in use",
-              "name": "capacityused",
-              "type": "long"
-            },
-            {
-              "description": "the Zone ID",
-              "name": "zoneid",
-              "type": "string"
+              "description": "the service provider name",
+              "name": "provider",
+              "response": [
+                {
+                  "description": "the provider name",
+                  "name": "name",
+                  "type": "string"
+                },
+                {
+                  "description": "the physical network this belongs to",
+                  "name": "physicalnetworkid",
+                  "type": "string"
+                },
+                {
+                  "description": "uuid of the network provider",
+                  "name": "id",
+                  "type": "string"
+                },
+                {
+                  "description": "the destination physical network",
+                  "name": "destinationphysicalnetworkid",
+                  "type": "string"
+                },
+                {
+                  "description": "true if individual services can be enabled/disabled",
+                  "name": "canenableindividualservice",
+                  "type": "boolean"
+                },
+                {
+                  "description": "state of the network provider",
+                  "name": "state",
+                  "type": "string"
+                },
+                {
+                  "description": "services for this provider",
+                  "name": "servicelist",
+                  "type": "list"
+                }
+              ],
+              "type": "list"
             },
             {
-              "description": "the Cluster name",
-              "name": "clustername",
-              "type": "string"
+              "description": "the list of capabilities",
+              "name": "capability",
+              "response": [
+                {
+                  "description": "the capability value",
+                  "name": "value",
+                  "type": "string"
+                },
+                {
+                  "description": "can this service capability value can be choosable while creatine network offerings",
+                  "name": "canchooseservicecapability",
+                  "type": "boolean"
+                },
+                {
+                  "description": "the capability name",
+                  "name": "name",
+                  "type": "string"
+                }
+              ],
+              "type": "list"
             }
           ],
           "type": "list"
         },
         {
-          "description": "true if the entity/resource has annotations",
-          "name": "hasannotations",
-          "type": "boolean"
-        },
-        {
-          "description": "the current status of the latest async job acting on this object",
-          "name": "jobstatus",
-          "type": "integer"
-        },
-        {
-          "description": "indicates Vlan ID for the range. This parameter is deprecated, please use 'vlanid' from ipranges parameter.",
-          "name": "vlanid",
-          "type": "list"
-        },
-        {
-          "description": "the ID of the Pod",
-          "name": "id",
-          "type": "string"
-        },
-        {
-          "description": "the gateway of the Pod",
-          "name": "gateway",
-          "type": "string"
+          "description": "the date this vpc offering was created",
+          "name": "created",
+          "type": "date"
         },
         {
           "description": "the UUID of the latest async job acting on this object",
           "name": "jobid",
           "type": "string"
-        },
-        {
-          "description": "the netmask of the Pod",
-          "name": "netmask",
-          "type": "string"
-        },
-        {
-          "description": "indicates if range is dedicated for CPVM and SSVM. This parameter is deprecated, please use 'forsystemvms' from ipranges parameter.",
-          "name": "forsystemvms",
-          "type": "list"
-        },
-        {
-          "description": "the Zone name of the Pod",
-          "name": "zonename",
-          "type": "string"
-        },
-        {
-          "description": "the ending IP for the Pod. This parameter is deprecated, please use 'endip' from ipranges parameter.",
-          "name": "endip",
-          "type": "list"
-        },
-        {
-          "description": "the allocation state of the Pod",
-          "name": "allocationstate",
-          "type": "string"
-        },
-        {
-          "description": "the name of the Pod",
-          "name": "name",
-          "type": "string"
-        },
-        {
-          "description": "the starting IP for the Pod. This parameter is deprecated, please use 'startip' from ipranges parameter.",
-          "name": "startip",
-          "type": "list"
-        },
-        {
-          "description": "the Zone ID of the Pod",
-          "name": "zoneid",
-          "type": "string"
-        },
-        {
-          "description": "the IP ranges for the Pod",
-          "name": "ipranges",
-          "response": [
-            {
-              "description": "the gateway for the range",
-              "name": "gateway",
-              "type": "string"
-            },
-            {
-              "description": "the CIDR for the range",
-              "name": "cidr",
-              "type": "string"
-            },
-            {
-              "description": "the starting IP for the range",
-              "name": "startip",
-              "type": "string"
-            },
-            {
-              "description": "indicates Vlan ID for the range",
-              "name": "vlanid",
-              "type": "string"
-            },
-            {
-              "description": "the ending IP for the range",
-              "name": "endip",
-              "type": "string"
-            },
-            {
-              "description": "indicates if range is dedicated for CPVM and SSVM",
-              "name": "forsystemvms",
-              "type": "string"
-            }
-          ],
-          "type": "list"
-        },
-        {},
-        {}
+        }
       ]
     },
     {
@@ -548,40 +320,40 @@
           "type": "string"
         },
         {
-          "description": "Network domain for the account's networks",
+          "description": "Creates the user under the specified domain.",
           "length": 255,
-          "name": "networkdomain",
+          "name": "domainid",
+          "related": "createDomain,listDomainChildren,listDomains,listDomains,updateDomain,moveDomain",
           "required": false,
-          "type": "string"
+          "type": "uuid"
         },
         {
-          "description": "Creates the account under the specified role.",
+          "description": "User UUID, required for adding account from external provisioning system",
           "length": 255,
-          "name": "roleid",
-          "related": "createRole,importRole,listRoles,updateRole",
+          "name": "userid",
           "required": false,
-          "type": "uuid"
+          "type": "string"
         },
         {
-          "description": "details for account used to store specific parameters",
+          "description": "Unique username.",
           "length": 255,
-          "name": "accountdetails",
-          "required": false,
-          "type": "map"
+          "name": "username",
+          "required": true,
+          "type": "string"
         },
         {
-          "description": "Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin",
+          "description": "Network domain for the account's networks",
           "length": 255,
-          "name": "accounttype",
+          "name": "networkdomain",
           "required": false,
-          "type": "integer"
+          "type": "string"
         },
         {
-          "description": "Unique username.",
+          "description": "details for account used to store specific parameters",
           "length": 255,
-          "name": "username",
-          "required": true,
-          "type": "string"
+          "name": "accountdetails",
+          "required": false,
+          "type": "map"
         },
         {
           "description": "Creates the user under the specified account. If no account is specified, the username will be used as the account name.",
@@ -591,92 +363,86 @@
           "type": "string"
         },
         {
-          "description": "Creates the user under the specified domain.",
+          "description": "Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin",
           "length": 255,
-          "name": "domainid",
-          "related": "createDomain,listDomainChildren,listDomains,listDomains,updateDomain,moveDomain",
+          "name": "accounttype",
           "required": false,
-          "type": "uuid"
+          "type": "integer"
         },
         {
-          "description": "User UUID, required for adding account from external provisioning system",
+          "description": "Creates the account under the specified role.",
           "length": 255,
-          "name": "userid",
+          "name": "roleid",
+          "related": "createRole,importRole,listRoles,updateRole",
           "required": false,
-          "type": "string"
+          "type": "uuid"
         }
       ],
       "related": "createAccount,disableAccount,enableAccount,lockAccount,updateAccount,markDefaultZoneForAccount,listAccounts,listAccounts",
       "response": [
-        {},
-        {
-          "description": "the total secondary storage space (in GiB) owned by account",
-          "name": "secondarystoragetotal",
-          "type": "float"
-        },
         {
-          "description": "the UUID of the latest async job acting on this object",
-          "name": "jobid",
+          "description": "the total memory (in MB) available to be created for this account",
+          "name": "memoryavailable",
           "type": "string"
         },
         {
-          "description": "the name of the role",
-          "name": "rolename",
-          "type": "string"
+          "description": "the list of acl groups that account belongs to",
+          "name": "groups",
+          "type": "list"
         },
         {
-          "description": "the total number of network traffic bytes received",
-          "name": "receivedbytes",
+          "description": "the total number of vpcs owned by account",
+          "name": "vpctotal",
           "type": "long"
         },
         {
-          "description": "the total secondary storage space (in GiB) available to be used for this account",
-          "name": "secondarystorageavailable",
+          "description": "the total secondary storage space (in GiB) the account can own",
+          "name": "secondarystoragelimit",
           "type": "string"
         },
         {
-          "description": "the total number of public ip addresses allocated for this account",
-          "name": "iptotal",
-          "type": "long"
-        },
-        {
-          "description": "the total number of snapshots stored by this account",
-          "name": "snapshottotal",
+          "description": "the total volume being used by this account",
+          "name": "volumetotal",
           "type": "long"
         },
         {
-          "description": "the total secondary storage space (in GiB) the account can own",
-          "name": "secondarystoragelimit",
+          "description": "the state of the account",
+          "name": "state",
           "type": "string"
         },
         {
-          "description": "Base64 string representation of the resource icon",
-          "name": "icon",
-          "type": "resourceiconresponse"
+          "description": "true if the account requires cleanup",
+          "name": "iscleanuprequired",
+          "type": "boolean"
         },
         {
-          "description": "the total number of virtual machines that can be deployed by this account",
-          "name": "vmlimit",
+          "description": "the name of the account",
+          "name": "name",
           "type": "string"
         },
         {
-          "description": "the total number of networks available to be created for this account",
-          "name": "networkavailable",
-          "type": "string"
+          "description": "the total number of network traffic bytes received",
+          "name": "receivedbytes",
+          "type": "long"
         },
         {
-          "description": "the total number of vpcs the account can own",
-          "name": "vpclimit",
+          "description": "the ID of the role",
+          "name": "roleid",
           "type": "string"
         },
         {
-          "description": "the date when this account was created",
-          "name": "created",
-          "type": "date"
+          "description": "account type (admin, domain-admin, user)",
+          "name": "accounttype",
+          "type": "integer"
         },
         {
-          "description": "the default zone of the account",
-          "name": "defaultzoneid",
+          "description": "the total primary storage space (in GiB) owned by account",
+          "name": "primarystoragetotal",
+          "type": "long"
+        },
+        {
+          "description": "the total secondary storage space (in GiB) available to be used for this account",
+          "name": "secondarystorageavailable",
           "type": "string"
         },
         {
@@ -685,70 +451,95 @@
           "type": "string"
         },
         {
-          "description": "the id of the account",
-          "name": "id",
+          "description": "the total number of public ip addresses available for this account to acquire",
+          "name": "ipavailable",
           "type": "string"
         },
         {
-          "description": "the total number of virtual machines stopped for this account",
-          "name": "vmstopped",
-          "type": "integer"
+          "description": "the total number of projects being administrated by this account",
+          "name": "projecttotal",
+          "type": "long"
         },
         {
-          "description": "the total number of virtual machines running for this account",
-          "name": "vmrunning",
+          "description": "true if account is default, false otherwise",
+          "name": "isdefault",
+          "type": "boolean"
+        },
+        {
+          "description": "the current status of the latest async job acting on this object",
+          "name": "jobstatus",
           "type": "integer"
         },
         {
-          "description": "the total number of snapshots available for this account",
-          "name": "snapshotavailable",
-          "type": "string"
+          "description": "the total number of network traffic bytes sent",
+          "name": "sentbytes",
+          "type": "long"
         },
         {
-          "description": "id of the Domain the account belongs to",
-          "name": "domainid",
+          "description": "the id of the account",
+          "name": "id",
           "type": "string"
         },
         {},
         {
-          "description": "the total number of cpu cores the account can own",
-          "name": "cpulimit",
+          "description": "the total secondary storage space (in GiB) owned by account",
+          "name": "secondarystoragetotal",
+          "type": "float"
+        },
+        {
+          "description": "the total volume available for this account",
+          "name": "volumeavailable",
           "type": "string"
         },
         {
-          "description": "the total number of projects the account can own",
-          "name": "projectlimit",
+          "description": "the total number of virtual machines running for this account",
+          "name": "vmrunning",
+          "type": "integer"
+        },
+        {
+          "description": "the total number of templates which have been created by this account",
+          "name": "templatetotal",
+          "type": "long"
+        },
+        {
+          "description": "the total number of projects available for administration by this account",
+          "name": "projectavailable",
           "type": "string"
         },
         {
-          "description": "the list of acl groups that account belongs to",
-          "name": "groups",
+          "description": "The tagged resource limit and count for the account",
+          "name": "taggedresources",
           "type": "list"
         },
         {
-          "description": "the total primary storage space (in GiB) owned by account",
-          "name": "primarystoragetotal",
+          "description": "the UUID of the latest async job acting on this object",
+          "name": "jobid",
+          "type": "string"
+        },
+        {
+          "description": "the total number of public ip addresses allocated for this account",
+          "name": "iptotal",
           "type": "long"
         },
         {
-          "description": "the type of the role (Admin, ResourceAdmin, DomainAdmin, User)",
-          "name": "roletype",
+          "description": "the name of the role",
+          "name": "rolename",
           "type": "string"
         },
         {
-          "description": "the total number of snapshots which can be stored by this account",
-          "name": "snapshotlimit",
-          "type": "string"
+          "description": "the total memory (in MB) owned by account",
+          "name": "memorytotal",
+          "type": "long"
         },
         {
-          "description": "the total memory (in MB) the account can own",
-          "name": "memorylimit",
+          "description": "the total number of networks the account can own",
+          "name": "networklimit",
           "type": "string"
         },
         {
-          "description": "true if the account requires cleanup",
-          "name": "iscleanuprequired",
-          "type": "boolean"
+          "description": "the network domain",
+          "name": "networkdomain",
+          "type": "string"
         },
         {
           "description": "the total number of networks owned by account",
@@ -756,24 +547,19 @@
           "type": "long"
         },
         {
-          "description": "the name of the account",
-          "name": "name",
+          "description": "the total number of virtual machines that can be deployed by this account",
+          "name": "vmlimit",
           "type": "string"
         },
         {
-          "description": "the total number of network traffic bytes sent",
-          "name": "sentbytes",
+          "description": "the total number of virtual machines deployed by this account",
+          "name": "vmtotal",
           "type": "long"
         },
         {
-          "description": "the state of the account",
-          "name": "state",
-          "type": "string"
-        },
-        {
-          "description": "name of the Domain the account belongs to",
-          "name": "domain",
-          "type": "string"
+          "description": "the date when this account was created",
+          "name": "created",
+          "type": "date"
         },
         {
           "description": "details for the account",
@@ -781,64 +567,50 @@
           "type": "map"
         },
         {
-          "description": "the current status of the latest async job acting on this object",
-          "name": "jobstatus",
-          "type": "integer"
+          "description": "the total number of cpu cores owned by account",
+          "name": "cputotal",
+          "type": "long"
         },
         {
-          "description": "the total number of public ip addresses this account can acquire",
-          "name": "iplimit",
-          "type": "string"
+          "description": "the total number of snapshots stored by this account",
+          "name": "snapshottotal",
+          "type": "long"
         },
         {
-          "description": "the total primary storage space (in GiB) available to be used for this account",
-          "name": "primarystorageavailable",
+          "description": "the total number of snapshots which can be stored by this account",
+          "name": "snapshotlimit",
           "type": "string"
         },
         {
-          "description": "account type (admin, domain-admin, user)",
-          "name": "accounttype",
-          "type": "integer"
+          "description": "Base64 string representation of the resource icon",
+          "name": "icon",
+          "type": "resourceiconresponse"
         },
         {
-          "description": "the total volume which can be used by this account",
-          "name": "volumelimit",
+          "description": "the total memory (in MB) the account can own",
+          "name": "memorylimit",
           "type": "string"
         },
+        {},
         {
           "description": "the total number of vpcs available to be created for this account",
           "name": "vpcavailable",
           "type": "string"
         },
         {
-          "description": "the total number of virtual machines deployed by this account",
-          "name": "vmtotal",
-          "type": "long"
-        },
-        {
-          "description": "the total volume being used by this account",
-          "name": "volumetotal",
-          "type": "long"
-        },
-        {
-          "description": "the total number of projects available for administration by this account",
-          "name": "projectavailable",
+          "description": "the total number of templates which can be created by this account",
+          "name": "templatelimit",
           "type": "string"
         },
         {
-          "description": "the total memory (in MB) available to be created for this account",
-          "name": "memoryavailable",
+          "description": "the total primary storage space (in GiB) available to be used for this account",
+          "name": "primarystorageavailable",
           "type": "string"
         },
         {
-          "description": "the total number of projects being administrated by this account",
-          "name": "projecttotal",
-          "type": "long"
-        },
-        {
-          "description": "the total number of cpu cores owned by account",
-          "name": "cputotal",
-          "type": "long"
+          "description": "the total primary storage space (in GiB) the account can own",
+          "name": "primarystoragelimit",
+          "type": "string"
         },
         {
           "description": "path of the Domain the account belongs to",
@@ -846,102 +618,87 @@
           "type": "string"
         },
         {
-          "description": "the total number of networks the account can own",
-          "name": "networklimit",
+          "description": "the default zone of the account",
+          "name": "defaultzoneid",
           "type": "string"
         },
         {
-          "description": "the total number of vpcs owned by account",
-          "name": "vpctotal",
-          "type": "long"
+          "description": "the total number of virtual machines stopped for this account",
+          "name": "vmstopped",
+          "type": "integer"
         },
         {
-          "description": "the total number of cpu cores available to be created for this account",
-          "name": "cpuavailable",
+          "description": "the total number of cpu cores the account can own",
+          "name": "cpulimit",
           "type": "string"
         },
         {
-          "description": "the network domain",
-          "name": "networkdomain",
+          "description": "the total number of cpu cores available to be created for this account",
+          "name": "cpuavailable",
           "type": "string"
         },
         {
-          "description": "the total number of public ip addresses available for this account to acquire",
-          "name": "ipavailable",
+          "description": "the total number of vpcs the account can own",
+          "name": "vpclimit",
           "type": "string"
         },
         {
-          "description": "the total memory (in MB) owned by account",
-          "name": "memorytotal",
-          "type": "long"
-        },
-        {
-          "description": "the total volume available for this account",
-          "name": "volumeavailable",
+          "description": "the total number of public ip addresses this account can acquire",
+          "name": "iplimit",
           "type": "string"
         },
         {
-          "description": "the total number of templates available to be created by this account",
-          "name": "templateavailable",
+          "description": "the total volume which can be used by this account",
+          "name": "volumelimit",
           "type": "string"
         },
         {
-          "description": "the ID of the role",
-          "name": "roleid",
+          "description": "the total number of snapshots available for this account",
+          "name": "snapshotavailable",
           "type": "string"
         },
         {
-          "description": "the total number of templates which have been created by this account",
-          "name": "templatetotal",
-          "type": "long"
+          "description": "the total number of networks available to be created for this account",
+          "name": "networkavailable",
+          "type": "string"
         },
         {
-          "description": "true if account is default, false otherwise",
-          "name": "isdefault",
-          "type": "boolean"
+          "description": "id of the Domain the account belongs to",
+          "name": "domainid",
+          "type": "string"
         },
         {
-          "description": "the total number of templates which can be created by this account",
-          "name": "templatelimit",
+          "description": "the type of the role (Admin, ResourceAdmin, DomainAdmin, User)",
+          "name": "roletype",
           "type": "string"
         },
         {
           "description": "the list of users associated with account",
           "name": "user",
           "response": [
-            {
-              "description": "the user firstname",
-              "name": "firstname",
-              "type": "string"
-            },
-            {
-              "description": "the date and time the user account was created",
-              "name": "created",
-              "type": "date"
-            },
             {
               "description": "the account ID of the user",
               "name": "accountid",
               "type": "string"
             },
             {
-              "description": "the type of the role",
-              "name": "roletype",
-              "type": "string"
+              "description": "the boolean value representing if the updating target is in caller's child domain",
+              "name": "iscallerchilddomain",
+              "type": "boolean"
             },
             {
-              "description": "the name of the role",
-              "name": "rolename",
+              "description": "the timezone user was created in",
+              "name": "timezone",
               "type": "string"
             },
             {
-              "description": "the user state",
-              "name": "state",
+              "description": "the user name",
+              "name": "username",
               "type": "string"
             },
             {
-              "description": "the timezone user was created in",
-              "name": "timezone",
+              "description": "the user email address",
+              "name": "email",
               "type": "string"
             },
             {
@@ -954,44 +711,44 @@
               "name": "account",
               "type": "string"
             },
-            {
-              "description": "Base64 string representation of the resource icon",
-              "name": "icon",
-              "type": "resourceiconresponse"
-            },
-            {
-              "description": "the source type of the user in lowercase, such as native, ldap, saml2",
-              "name": "usersource",
-              "type": "string"
-            },
             {
               "description": "the domain name of the user",
               "name": "domain",
               "type": "string"
             },
             {
-              "description": "the ID of the role",
-              "name": "roleid",
+              "description": "the user state",
+              "name": "state",
               "type": "string"
             },
             {
-              "description": "the boolean value representing if the updating target is in caller's child domain",
-              "name": "iscallerchilddomain",
+              "description": "true if user is default, false otherwise",
+              "name": "isdefault",
               "type": "boolean"
             },
             {
-              "description": "true if user is default, false otherwise",
-              "name": "isdefault",
+              "description": "true if user has two factor authentication enabled",
+              "name": "is2faenabled",
               "type": "boolean"
             },
             {
-              "description": "the user email address",
-              "name": "email",
+              "description": "the source type of the user in lowercase, such as native, ldap, saml2",
+              "name": "usersource",
               "type": "string"
             },
             {
-              "description": "the user ID",
-              "name": "id",
+              "description": "Base64 string representation of the resource icon",
+              "name": "icon",
+              "type": "resourceiconresponse"
+            },
+            {
+              "description": "the ID of the role",
+              "name": "roleid",
+              "type": "string"
+            },
+            {
+              "description": "the domain ID of the user",
+              "name": "domainid",
               "type": "string"
             },
             {
@@ -1004,80 +761,61 @@
               "name": "is2famandated",
               "type": "boolean"
             },
+            {
+              "description": "the user firstname",
+              "name": "firstname",
+              "type": "string"
+            },
             {
               "description": "the api key of the user",
               "name": "apikey",
               "type": "string"
             },
             {
-              "description": "true if user has two factor authentication enabled",
-              "name": "is2faenabled",
-              "type": "boolean"
+              "description": "the name of the role",
+              "name": "rolename",
+              "type": "string"
             },
             {
-              "description": "the user name",
-              "name": "username",
+              "description": "the date and time the user account was created",
+              "name": "created",
+              "type": "date"
+            },
+            {
+              "description": "the user ID",
+              "name": "id",
+              "type": "string"
+            },
+            {
+              "description": "the type of the role",
+              "name": "roletype",
               "type": "string"
             },
             {
               "description": "the account type of the user",
               "name": "accounttype",
               "type": "integer"
-            },
-            {
-              "description": "the domain ID of the user",
-              "name": "domainid",
-              "type": "string"
             }
           ],
           "type": "list"
         },
         {
-          "description": "the total primary storage space (in GiB) the account can own",
-          "name": "primarystoragelimit",
+          "description": "the total number of templates available to be created by this account",
+          "name": "templateavailable",
           "type": "string"
-        }
-      ],
-      "since": "4.2.0"
-    },
-    {
-      "description": "Safely removes raw records from cloud_usage table",
-      "isasync": false,
-      "name": "removeRawUsageRecords",
-      "params": [
-        {
-          "description": "Specify the number of days (greater than zero) to remove records that are older than those number of days from today. For example, specifying 10 would result in removing all the records created before 10 days from today",
-          "length": 255,
-          "name": "interval",
-          "required": true,
-          "type": "integer"
-        }
... 244431 lines suppressed ...