Browse Source

Supported Qos for smartag.

sdk-team 6 years ago
parent
commit
c78ca2ea5e
100 changed files with 5715 additions and 442 deletions
  1. 3 0
      ChangeLog.txt
  2. 1 1
      services/smartag/activate_smart_access_gateway.go
  3. 107 0
      services/smartag/active_flow_log.go
  4. 9 7
      services/smartag/add_acl_rule.go
  5. 114 0
      services/smartag/add_dnat_entry.go
  6. 3 3
      services/smartag/add_network_optimization_setting.go
  7. 28 26
      services/smartag/add_sag_cidr.go
  8. 110 0
      services/smartag/add_snat_entry.go
  9. 2 2
      services/smartag/associate_acl.go
  10. 27 27
      services/smartag/associate_flow_log.go
  11. 27 27
      services/smartag/associate_qos.go
  12. 2 2
      services/smartag/attach_network_optimization_sags.go
  13. 108 0
      services/smartag/bind_serial_number.go
  14. 3 2
      services/smartag/bind_smart_access_gateway.go
  15. 28 28
      services/smartag/bind_vbr.go
  16. 1 1
      services/smartag/clear_sag_routeable_address.go
  17. 25 0
      services/smartag/client.go
  18. 1 1
      services/smartag/create_acl.go
  19. 4 4
      services/smartag/create_cloud_connect_network.go
  20. 118 0
      services/smartag/create_flow_log.go
  21. 137 0
      services/smartag/create_health_check.go
  22. 2 2
      services/smartag/create_network_optimization.go
  23. 109 0
      services/smartag/create_qos.go
  24. 126 0
      services/smartag/create_qos_car.go
  25. 129 0
      services/smartag/create_qos_policy.go
  26. 0 112
      services/smartag/create_sag_link_level_ha.go
  27. 3 2
      services/smartag/create_smart_access_gateway_client_user.go
  28. 2 2
      services/smartag/create_smart_access_gateway_software.go
  29. 107 0
      services/smartag/deactive_flow_log.go
  30. 1 1
      services/smartag/delete_acl.go
  31. 1 1
      services/smartag/delete_acl_rule.go
  32. 1 1
      services/smartag/delete_cloud_connect_network.go
  33. 0 107
      services/smartag/delete_dedicated_line_backup.go
  34. 108 0
      services/smartag/delete_dnat_entry.go
  35. 107 0
      services/smartag/delete_flow_log.go
  36. 107 0
      services/smartag/delete_health_check.go
  37. 1 1
      services/smartag/delete_network_optimization.go
  38. 3 3
      services/smartag/delete_network_optimization_setting.go
  39. 107 0
      services/smartag/delete_qos.go
  40. 108 0
      services/smartag/delete_qos_car.go
  41. 108 0
      services/smartag/delete_qos_policy.go
  42. 110 0
      services/smartag/delete_route_distribution_strategy.go
  43. 108 0
      services/smartag/delete_sag_cidr.go
  44. 1 1
      services/smartag/delete_smart_access_gateway_client_user.go
  45. 108 0
      services/smartag/delete_snat_entry.go
  46. 4 4
      services/smartag/describe_ac_ls.go
  47. 5 5
      services/smartag/describe_acl_attribute.go
  48. 114 0
      services/smartag/describe_bindable_smart_access_gateways.go
  49. 5 5
      services/smartag/describe_cloud_connect_networks.go
  50. 114 0
      services/smartag/describe_device_auto_upgrade_policy.go
  51. 114 0
      services/smartag/describe_dnat_entries.go
  52. 113 0
      services/smartag/describe_flow_log_sags.go
  53. 117 0
      services/smartag/describe_flow_logs.go
  54. 7 7
      services/smartag/describe_grant_rules.go
  55. 113 0
      services/smartag/describe_grant_sag_rules.go
  56. 124 0
      services/smartag/describe_health_check_attribute.go
  57. 115 0
      services/smartag/describe_health_checks.go
  58. 4 4
      services/smartag/describe_network_optimization_sags.go
  59. 4 4
      services/smartag/describe_network_optimization_settings.go
  60. 6 6
      services/smartag/describe_network_optimizations.go
  61. 109 0
      services/smartag/describe_pbr_interfaces.go
  62. 113 0
      services/smartag/describe_pbr_rules.go
  63. 115 0
      services/smartag/describe_policy_based_routings.go
  64. 116 0
      services/smartag/describe_qos_cars.go
  65. 116 0
      services/smartag/describe_qos_policies.go
  66. 114 0
      services/smartag/describe_qoses.go
  67. 1 1
      services/smartag/describe_regions.go
  68. 114 0
      services/smartag/describe_route_distribution_strategies.go
  69. 114 0
      services/smartag/describe_sag_ec_route_backup_attribute.go
  70. 1 1
      services/smartag/describe_sag_online_client_statistics.go
  71. 113 0
      services/smartag/describe_sag_remote_access.go
  72. 1 1
      services/smartag/describe_sag_routeable_address.go
  73. 127 0
      services/smartag/describe_smart_access_gateway_attribute.go
  74. 4 4
      services/smartag/describe_smart_access_gateway_client_users.go
  75. 1 1
      services/smartag/describe_smart_access_gateway_ha.go
  76. 1 1
      services/smartag/describe_smart_access_gateway_versions.go
  77. 6 5
      services/smartag/describe_smart_access_gateways.go
  78. 113 0
      services/smartag/describe_snat_entries.go
  79. 108 0
      services/smartag/describe_unbind_flow_log_sags.go
  80. 2 2
      services/smartag/describe_user_flow_statistics.go
  81. 2 2
      services/smartag/describe_user_online_client_statistics.go
  82. 1 1
      services/smartag/describe_user_online_clients.go
  83. 2 2
      services/smartag/detach_network_optimization_sags.go
  84. 108 0
      services/smartag/disable_smart_access_gateway_user.go
  85. 2 2
      services/smartag/disassociate_acl.go
  86. 108 0
      services/smartag/disassociate_flow_log.go
  87. 108 0
      services/smartag/disassociate_qos.go
  88. 3 3
      services/smartag/downgrade_smart_access_gateway.go
  89. 111 0
      services/smartag/downgrade_smart_access_gateway_software.go
  90. 108 0
      services/smartag/enable_smart_access_gateway_user.go
  91. 20 0
      services/smartag/endpoint.go
  92. 3 3
      services/smartag/grant_instance_to_cbn.go
  93. 110 0
      services/smartag/grant_sag_instance_to_ccn.go
  94. 1 1
      services/smartag/kick_out_clients.go
  95. 2 2
      services/smartag/modify_acl.go
  96. 8 7
      services/smartag/modify_acl_rule.go
  97. 4 4
      services/smartag/modify_cloud_connect_network.go
  98. 112 0
      services/smartag/modify_device_auto_upgrade_policy.go
  99. 118 0
      services/smartag/modify_flow_log_attribute.go
  100. 121 0
      services/smartag/modify_health_check.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2019-11-04 Version: 1.60.227
+- Supported Qos for smartag.
+
 2019-11-04 Version: 1.60.226
 - Support console api for cloud bastionhost.
 

+ 1 - 1
services/smartag/activate_smart_access_gateway.go

@@ -79,8 +79,8 @@ type ActivateSmartAccessGatewayRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // ActivateSmartAccessGatewayResponse is the response struct for api ActivateSmartAccessGateway

+ 107 - 0
services/smartag/active_flow_log.go

@@ -0,0 +1,107 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ActiveFlowLog invokes the smartag.ActiveFlowLog API synchronously
+// api document: https://help.aliyun.com/api/smartag/activeflowlog.html
+func (client *Client) ActiveFlowLog(request *ActiveFlowLogRequest) (response *ActiveFlowLogResponse, err error) {
+	response = CreateActiveFlowLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ActiveFlowLogWithChan invokes the smartag.ActiveFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/activeflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ActiveFlowLogWithChan(request *ActiveFlowLogRequest) (<-chan *ActiveFlowLogResponse, <-chan error) {
+	responseChan := make(chan *ActiveFlowLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ActiveFlowLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ActiveFlowLogWithCallback invokes the smartag.ActiveFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/activeflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ActiveFlowLogWithCallback(request *ActiveFlowLogRequest, callback func(response *ActiveFlowLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ActiveFlowLogResponse
+		var err error
+		defer close(result)
+		response, err = client.ActiveFlowLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ActiveFlowLogRequest is the request struct for api ActiveFlowLog
+type ActiveFlowLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+}
+
+// ActiveFlowLogResponse is the response struct for api ActiveFlowLog
+type ActiveFlowLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateActiveFlowLogRequest creates a request to invoke ActiveFlowLog API
+func CreateActiveFlowLogRequest() (request *ActiveFlowLogRequest) {
+	request = &ActiveFlowLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "ActiveFlowLog", "smartag", "openAPI")
+	return
+}
+
+// CreateActiveFlowLogResponse creates a response to parse from ActiveFlowLog response
+func CreateActiveFlowLogResponse() (response *ActiveFlowLogResponse) {
+	response = &ActiveFlowLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 9 - 7
services/smartag/add_acl_rule.go

@@ -76,20 +76,21 @@ func (client *Client) AddACLRuleWithCallback(request *AddACLRuleRequest, callbac
 // AddACLRuleRequest is the request struct for api AddACLRule
 type AddACLRuleRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	SourcePortRange      string           `position:"Query" name:"SourcePortRange"`
+	SourceCidr           string           `position:"Query" name:"SourceCidr"`
+	Description          string           `position:"Query" name:"Description"`
+	Type                 string           `position:"Query" name:"Type"`
+	DestCidr             string           `position:"Query" name:"DestCidr"`
+	Direction            string           `position:"Query" name:"Direction"`
+	Policy               string           `position:"Query" name:"Policy"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	IpProtocol           string           `position:"Query" name:"IpProtocol"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SourceCidr           string           `position:"Query" name:"SourceCidr"`
-	Description          string           `position:"Query" name:"Description"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	Priority             requests.Integer `position:"Query" name:"Priority"`
-	DestCidr             string           `position:"Query" name:"DestCidr"`
 	DestPortRange        string           `position:"Query" name:"DestPortRange"`
-	Direction            string           `position:"Query" name:"Direction"`
-	Policy               string           `position:"Query" name:"Policy"`
 }
 
 // AddACLRuleResponse is the response struct for api AddACLRule
@@ -107,7 +108,8 @@ type AddACLRuleResponse struct {
 	DestPortRange   string `json:"DestPortRange" xml:"DestPortRange"`
 	Policy          string `json:"Policy" xml:"Policy"`
 	Priority        int    `json:"Priority" xml:"Priority"`
-	GmtCreate       int    `json:"GmtCreate" xml:"GmtCreate"`
+	GmtCreate       int64  `json:"GmtCreate" xml:"GmtCreate"`
+	Type            string `json:"Type" xml:"Type"`
 }
 
 // CreateAddACLRuleRequest creates a request to invoke AddACLRule API

+ 114 - 0
services/smartag/add_dnat_entry.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddDnatEntry invokes the smartag.AddDnatEntry API synchronously
+// api document: https://help.aliyun.com/api/smartag/adddnatentry.html
+func (client *Client) AddDnatEntry(request *AddDnatEntryRequest) (response *AddDnatEntryResponse, err error) {
+	response = CreateAddDnatEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddDnatEntryWithChan invokes the smartag.AddDnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/adddnatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddDnatEntryWithChan(request *AddDnatEntryRequest) (<-chan *AddDnatEntryResponse, <-chan error) {
+	responseChan := make(chan *AddDnatEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddDnatEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddDnatEntryWithCallback invokes the smartag.AddDnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/adddnatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddDnatEntryWithCallback(request *AddDnatEntryRequest, callback func(response *AddDnatEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddDnatEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.AddDnatEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddDnatEntryRequest is the request struct for api AddDnatEntry
+type AddDnatEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Type                 string           `position:"Query" name:"Type"`
+	InternalIp           string           `position:"Query" name:"InternalIp"`
+	ExternalIp           string           `position:"Query" name:"ExternalIp"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	IpProtocol           string           `position:"Query" name:"IpProtocol"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SagId                string           `position:"Query" name:"SagId"`
+	InternalPort         string           `position:"Query" name:"InternalPort"`
+	ExternalPort         string           `position:"Query" name:"ExternalPort"`
+}
+
+// AddDnatEntryResponse is the response struct for api AddDnatEntry
+type AddDnatEntryResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	DnatEntryId string `json:"DnatEntryId" xml:"DnatEntryId"`
+}
+
+// CreateAddDnatEntryRequest creates a request to invoke AddDnatEntry API
+func CreateAddDnatEntryRequest() (request *AddDnatEntryRequest) {
+	request = &AddDnatEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "AddDnatEntry", "smartag", "openAPI")
+	return
+}
+
+// CreateAddDnatEntryResponse creates a response to parse from AddDnatEntry response
+func CreateAddDnatEntryResponse() (response *AddDnatEntryResponse) {
+	response = &AddDnatEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 3
services/smartag/add_network_optimization_setting.go

@@ -77,12 +77,12 @@ func (client *Client) AddNetworkOptimizationSettingWithCallback(request *AddNetw
 type AddNetworkOptimizationSettingRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Type                 string           `position:"Query" name:"Type"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Domain               string           `position:"Query" name:"Domain"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	Type                 string           `position:"Query" name:"Type"`
+	Domain               string           `position:"Query" name:"Domain"`
 }
 
 // AddNetworkOptimizationSettingResponse is the response struct for api AddNetworkOptimizationSetting

+ 28 - 26
services/smartag/switch_cloud_box_ha_state.go → services/smartag/add_sag_cidr.go

@@ -20,24 +20,24 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 )
 
-// SwitchCloudBoxHaState invokes the smartag.SwitchCloudBoxHaState API synchronously
-// api document: https://help.aliyun.com/api/smartag/switchcloudboxhastate.html
-func (client *Client) SwitchCloudBoxHaState(request *SwitchCloudBoxHaStateRequest) (response *SwitchCloudBoxHaStateResponse, err error) {
-	response = CreateSwitchCloudBoxHaStateResponse()
+// AddSagCidr invokes the smartag.AddSagCidr API synchronously
+// api document: https://help.aliyun.com/api/smartag/addsagcidr.html
+func (client *Client) AddSagCidr(request *AddSagCidrRequest) (response *AddSagCidrResponse, err error) {
+	response = CreateAddSagCidrResponse()
 	err = client.DoAction(request, response)
 	return
 }
 
-// SwitchCloudBoxHaStateWithChan invokes the smartag.SwitchCloudBoxHaState API asynchronously
-// api document: https://help.aliyun.com/api/smartag/switchcloudboxhastate.html
+// AddSagCidrWithChan invokes the smartag.AddSagCidr API asynchronously
+// api document: https://help.aliyun.com/api/smartag/addsagcidr.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) SwitchCloudBoxHaStateWithChan(request *SwitchCloudBoxHaStateRequest) (<-chan *SwitchCloudBoxHaStateResponse, <-chan error) {
-	responseChan := make(chan *SwitchCloudBoxHaStateResponse, 1)
+func (client *Client) AddSagCidrWithChan(request *AddSagCidrRequest) (<-chan *AddSagCidrResponse, <-chan error) {
+	responseChan := make(chan *AddSagCidrResponse, 1)
 	errChan := make(chan error, 1)
 	err := client.AddAsyncTask(func() {
 		defer close(responseChan)
 		defer close(errChan)
-		response, err := client.SwitchCloudBoxHaState(request)
+		response, err := client.AddSagCidr(request)
 		if err != nil {
 			errChan <- err
 		} else {
@@ -52,16 +52,16 @@ func (client *Client) SwitchCloudBoxHaStateWithChan(request *SwitchCloudBoxHaSta
 	return responseChan, errChan
 }
 
-// SwitchCloudBoxHaStateWithCallback invokes the smartag.SwitchCloudBoxHaState API asynchronously
-// api document: https://help.aliyun.com/api/smartag/switchcloudboxhastate.html
+// AddSagCidrWithCallback invokes the smartag.AddSagCidr API asynchronously
+// api document: https://help.aliyun.com/api/smartag/addsagcidr.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) SwitchCloudBoxHaStateWithCallback(request *SwitchCloudBoxHaStateRequest, callback func(response *SwitchCloudBoxHaStateResponse, err error)) <-chan int {
+func (client *Client) AddSagCidrWithCallback(request *AddSagCidrRequest, callback func(response *AddSagCidrResponse, err error)) <-chan int {
 	result := make(chan int, 1)
 	err := client.AddAsyncTask(func() {
-		var response *SwitchCloudBoxHaStateResponse
+		var response *AddSagCidrResponse
 		var err error
 		defer close(result)
-		response, err = client.SwitchCloudBoxHaState(request)
+		response, err = client.AddSagCidr(request)
 		callback(response, err)
 		result <- 1
 	})
@@ -73,34 +73,36 @@ func (client *Client) SwitchCloudBoxHaStateWithCallback(request *SwitchCloudBoxH
 	return result
 }
 
-// SwitchCloudBoxHaStateRequest is the request struct for api SwitchCloudBoxHaState
-type SwitchCloudBoxHaStateRequest struct {
+// AddSagCidrRequest is the request struct for api AddSagCidr
+type AddSagCidrRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Cidr                 string           `position:"Query" name:"Cidr"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	EnableBackup         requests.Boolean `position:"Query" name:"EnableBackup"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
-// SwitchCloudBoxHaStateResponse is the response struct for api SwitchCloudBoxHaState
-type SwitchCloudBoxHaStateResponse struct {
+// AddSagCidrResponse is the response struct for api AddSagCidr
+type AddSagCidrResponse struct {
 	*responses.BaseResponse
 	RequestId string `json:"RequestId" xml:"RequestId"`
 }
 
-// CreateSwitchCloudBoxHaStateRequest creates a request to invoke SwitchCloudBoxHaState API
-func CreateSwitchCloudBoxHaStateRequest() (request *SwitchCloudBoxHaStateRequest) {
-	request = &SwitchCloudBoxHaStateRequest{
+// CreateAddSagCidrRequest creates a request to invoke AddSagCidr API
+func CreateAddSagCidrRequest() (request *AddSagCidrRequest) {
+	request = &AddSagCidrRequest{
 		RpcRequest: &requests.RpcRequest{},
 	}
-	request.InitWithApiInfo("Smartag", "2018-03-13", "SwitchCloudBoxHaState", "smartag", "openAPI")
+	request.InitWithApiInfo("Smartag", "2018-03-13", "AddSagCidr", "smartag", "openAPI")
 	return
 }
 
-// CreateSwitchCloudBoxHaStateResponse creates a response to parse from SwitchCloudBoxHaState response
-func CreateSwitchCloudBoxHaStateResponse() (response *SwitchCloudBoxHaStateResponse) {
-	response = &SwitchCloudBoxHaStateResponse{
+// CreateAddSagCidrResponse creates a response to parse from AddSagCidr response
+func CreateAddSagCidrResponse() (response *AddSagCidrResponse) {
+	response = &AddSagCidrResponse{
 		BaseResponse: &responses.BaseResponse{},
 	}
 	return

+ 110 - 0
services/smartag/add_snat_entry.go

@@ -0,0 +1,110 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AddSnatEntry invokes the smartag.AddSnatEntry API synchronously
+// api document: https://help.aliyun.com/api/smartag/addsnatentry.html
+func (client *Client) AddSnatEntry(request *AddSnatEntryRequest) (response *AddSnatEntryResponse, err error) {
+	response = CreateAddSnatEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AddSnatEntryWithChan invokes the smartag.AddSnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/addsnatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddSnatEntryWithChan(request *AddSnatEntryRequest) (<-chan *AddSnatEntryResponse, <-chan error) {
+	responseChan := make(chan *AddSnatEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddSnatEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AddSnatEntryWithCallback invokes the smartag.AddSnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/addsnatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AddSnatEntryWithCallback(request *AddSnatEntryRequest, callback func(response *AddSnatEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddSnatEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.AddSnatEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AddSnatEntryRequest is the request struct for api AddSnatEntry
+type AddSnatEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SnatIp               string           `position:"Query" name:"SnatIp"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	CidrBlock            string           `position:"Query" name:"CidrBlock"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// AddSnatEntryResponse is the response struct for api AddSnatEntry
+type AddSnatEntryResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	InstanceId string `json:"InstanceId" xml:"InstanceId"`
+}
+
+// CreateAddSnatEntryRequest creates a request to invoke AddSnatEntry API
+func CreateAddSnatEntryRequest() (request *AddSnatEntryRequest) {
+	request = &AddSnatEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "AddSnatEntry", "smartag", "openAPI")
+	return
+}
+
+// CreateAddSnatEntryResponse creates a response to parse from AddSnatEntry response
+func CreateAddSnatEntryResponse() (response *AddSnatEntryResponse) {
+	response = &AddSnatEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/smartag/associate_acl.go

@@ -76,12 +76,12 @@ func (client *Client) AssociateACLWithCallback(request *AssociateACLRequest, cal
 // AssociateACLRequest is the request struct for api AssociateACL
 type AssociateACLRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // AssociateACLResponse is the response struct for api AssociateACL

+ 27 - 27
services/smartag/switch_sag_ha_state.go → services/smartag/associate_flow_log.go

@@ -20,24 +20,24 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 )
 
-// SwitchSAGHaState invokes the smartag.SwitchSAGHaState API synchronously
-// api document: https://help.aliyun.com/api/smartag/switchsaghastate.html
-func (client *Client) SwitchSAGHaState(request *SwitchSAGHaStateRequest) (response *SwitchSAGHaStateResponse, err error) {
-	response = CreateSwitchSAGHaStateResponse()
+// AssociateFlowLog invokes the smartag.AssociateFlowLog API synchronously
+// api document: https://help.aliyun.com/api/smartag/associateflowlog.html
+func (client *Client) AssociateFlowLog(request *AssociateFlowLogRequest) (response *AssociateFlowLogResponse, err error) {
+	response = CreateAssociateFlowLogResponse()
 	err = client.DoAction(request, response)
 	return
 }
 
-// SwitchSAGHaStateWithChan invokes the smartag.SwitchSAGHaState API asynchronously
-// api document: https://help.aliyun.com/api/smartag/switchsaghastate.html
+// AssociateFlowLogWithChan invokes the smartag.AssociateFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/associateflowlog.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) SwitchSAGHaStateWithChan(request *SwitchSAGHaStateRequest) (<-chan *SwitchSAGHaStateResponse, <-chan error) {
-	responseChan := make(chan *SwitchSAGHaStateResponse, 1)
+func (client *Client) AssociateFlowLogWithChan(request *AssociateFlowLogRequest) (<-chan *AssociateFlowLogResponse, <-chan error) {
+	responseChan := make(chan *AssociateFlowLogResponse, 1)
 	errChan := make(chan error, 1)
 	err := client.AddAsyncTask(func() {
 		defer close(responseChan)
 		defer close(errChan)
-		response, err := client.SwitchSAGHaState(request)
+		response, err := client.AssociateFlowLog(request)
 		if err != nil {
 			errChan <- err
 		} else {
@@ -52,16 +52,16 @@ func (client *Client) SwitchSAGHaStateWithChan(request *SwitchSAGHaStateRequest)
 	return responseChan, errChan
 }
 
-// SwitchSAGHaStateWithCallback invokes the smartag.SwitchSAGHaState API asynchronously
-// api document: https://help.aliyun.com/api/smartag/switchsaghastate.html
+// AssociateFlowLogWithCallback invokes the smartag.AssociateFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/associateflowlog.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) SwitchSAGHaStateWithCallback(request *SwitchSAGHaStateRequest, callback func(response *SwitchSAGHaStateResponse, err error)) <-chan int {
+func (client *Client) AssociateFlowLogWithCallback(request *AssociateFlowLogRequest, callback func(response *AssociateFlowLogResponse, err error)) <-chan int {
 	result := make(chan int, 1)
 	err := client.AddAsyncTask(func() {
-		var response *SwitchSAGHaStateResponse
+		var response *AssociateFlowLogResponse
 		var err error
 		defer close(result)
-		response, err = client.SwitchSAGHaState(request)
+		response, err = client.AssociateFlowLog(request)
 		callback(response, err)
 		result <- 1
 	})
@@ -73,35 +73,35 @@ func (client *Client) SwitchSAGHaStateWithCallback(request *SwitchSAGHaStateRequ
 	return result
 }
 
-// SwitchSAGHaStateRequest is the request struct for api SwitchSAGHaState
-type SwitchSAGHaStateRequest struct {
+// AssociateFlowLogRequest is the request struct for api AssociateFlowLog
+type AssociateFlowLogRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	HaType               string           `position:"Query" name:"HaType"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
 }
 
-// SwitchSAGHaStateResponse is the response struct for api SwitchSAGHaState
-type SwitchSAGHaStateResponse struct {
+// AssociateFlowLogResponse is the response struct for api AssociateFlowLog
+type AssociateFlowLogResponse struct {
 	*responses.BaseResponse
 	RequestId string `json:"RequestId" xml:"RequestId"`
 }
 
-// CreateSwitchSAGHaStateRequest creates a request to invoke SwitchSAGHaState API
-func CreateSwitchSAGHaStateRequest() (request *SwitchSAGHaStateRequest) {
-	request = &SwitchSAGHaStateRequest{
+// CreateAssociateFlowLogRequest creates a request to invoke AssociateFlowLog API
+func CreateAssociateFlowLogRequest() (request *AssociateFlowLogRequest) {
+	request = &AssociateFlowLogRequest{
 		RpcRequest: &requests.RpcRequest{},
 	}
-	request.InitWithApiInfo("Smartag", "2018-03-13", "SwitchSAGHaState", "smartag", "openAPI")
+	request.InitWithApiInfo("Smartag", "2018-03-13", "AssociateFlowLog", "smartag", "openAPI")
 	return
 }
 
-// CreateSwitchSAGHaStateResponse creates a response to parse from SwitchSAGHaState response
-func CreateSwitchSAGHaStateResponse() (response *SwitchSAGHaStateResponse) {
-	response = &SwitchSAGHaStateResponse{
+// CreateAssociateFlowLogResponse creates a response to parse from AssociateFlowLog response
+func CreateAssociateFlowLogResponse() (response *AssociateFlowLogResponse) {
+	response = &AssociateFlowLogResponse{
 		BaseResponse: &responses.BaseResponse{},
 	}
 	return

+ 27 - 27
services/smartag/delete_sag_link_level_ha.go → services/smartag/associate_qos.go

@@ -20,24 +20,24 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 )
 
-// DeleteSAGLinkLevelHa invokes the smartag.DeleteSAGLinkLevelHa API synchronously
-// api document: https://help.aliyun.com/api/smartag/deletesaglinklevelha.html
-func (client *Client) DeleteSAGLinkLevelHa(request *DeleteSAGLinkLevelHaRequest) (response *DeleteSAGLinkLevelHaResponse, err error) {
-	response = CreateDeleteSAGLinkLevelHaResponse()
+// AssociateQos invokes the smartag.AssociateQos API synchronously
+// api document: https://help.aliyun.com/api/smartag/associateqos.html
+func (client *Client) AssociateQos(request *AssociateQosRequest) (response *AssociateQosResponse, err error) {
+	response = CreateAssociateQosResponse()
 	err = client.DoAction(request, response)
 	return
 }
 
-// DeleteSAGLinkLevelHaWithChan invokes the smartag.DeleteSAGLinkLevelHa API asynchronously
-// api document: https://help.aliyun.com/api/smartag/deletesaglinklevelha.html
+// AssociateQosWithChan invokes the smartag.AssociateQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/associateqos.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) DeleteSAGLinkLevelHaWithChan(request *DeleteSAGLinkLevelHaRequest) (<-chan *DeleteSAGLinkLevelHaResponse, <-chan error) {
-	responseChan := make(chan *DeleteSAGLinkLevelHaResponse, 1)
+func (client *Client) AssociateQosWithChan(request *AssociateQosRequest) (<-chan *AssociateQosResponse, <-chan error) {
+	responseChan := make(chan *AssociateQosResponse, 1)
 	errChan := make(chan error, 1)
 	err := client.AddAsyncTask(func() {
 		defer close(responseChan)
 		defer close(errChan)
-		response, err := client.DeleteSAGLinkLevelHa(request)
+		response, err := client.AssociateQos(request)
 		if err != nil {
 			errChan <- err
 		} else {
@@ -52,16 +52,16 @@ func (client *Client) DeleteSAGLinkLevelHaWithChan(request *DeleteSAGLinkLevelHa
 	return responseChan, errChan
 }
 
-// DeleteSAGLinkLevelHaWithCallback invokes the smartag.DeleteSAGLinkLevelHa API asynchronously
-// api document: https://help.aliyun.com/api/smartag/deletesaglinklevelha.html
+// AssociateQosWithCallback invokes the smartag.AssociateQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/associateqos.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) DeleteSAGLinkLevelHaWithCallback(request *DeleteSAGLinkLevelHaRequest, callback func(response *DeleteSAGLinkLevelHaResponse, err error)) <-chan int {
+func (client *Client) AssociateQosWithCallback(request *AssociateQosRequest, callback func(response *AssociateQosResponse, err error)) <-chan int {
 	result := make(chan int, 1)
 	err := client.AddAsyncTask(func() {
-		var response *DeleteSAGLinkLevelHaResponse
+		var response *AssociateQosResponse
 		var err error
 		defer close(result)
-		response, err = client.DeleteSAGLinkLevelHa(request)
+		response, err = client.AssociateQos(request)
 		callback(response, err)
 		result <- 1
 	})
@@ -73,35 +73,35 @@ func (client *Client) DeleteSAGLinkLevelHaWithCallback(request *DeleteSAGLinkLev
 	return result
 }
 
-// DeleteSAGLinkLevelHaRequest is the request struct for api DeleteSAGLinkLevelHa
-type DeleteSAGLinkLevelHaRequest struct {
+// AssociateQosRequest is the request struct for api AssociateQos
+type AssociateQosRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	QosId                string           `position:"Query" name:"QosId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	HaType               string           `position:"Query" name:"HaType"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
-// DeleteSAGLinkLevelHaResponse is the response struct for api DeleteSAGLinkLevelHa
-type DeleteSAGLinkLevelHaResponse struct {
+// AssociateQosResponse is the response struct for api AssociateQos
+type AssociateQosResponse struct {
 	*responses.BaseResponse
 	RequestId string `json:"RequestId" xml:"RequestId"`
 }
 
-// CreateDeleteSAGLinkLevelHaRequest creates a request to invoke DeleteSAGLinkLevelHa API
-func CreateDeleteSAGLinkLevelHaRequest() (request *DeleteSAGLinkLevelHaRequest) {
-	request = &DeleteSAGLinkLevelHaRequest{
+// CreateAssociateQosRequest creates a request to invoke AssociateQos API
+func CreateAssociateQosRequest() (request *AssociateQosRequest) {
+	request = &AssociateQosRequest{
 		RpcRequest: &requests.RpcRequest{},
 	}
-	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteSAGLinkLevelHa", "smartag", "openAPI")
+	request.InitWithApiInfo("Smartag", "2018-03-13", "AssociateQos", "smartag", "openAPI")
 	return
 }
 
-// CreateDeleteSAGLinkLevelHaResponse creates a response to parse from DeleteSAGLinkLevelHa response
-func CreateDeleteSAGLinkLevelHaResponse() (response *DeleteSAGLinkLevelHaResponse) {
-	response = &DeleteSAGLinkLevelHaResponse{
+// CreateAssociateQosResponse creates a response to parse from AssociateQos response
+func CreateAssociateQosResponse() (response *AssociateQosResponse) {
+	response = &AssociateQosResponse{
 		BaseResponse: &responses.BaseResponse{},
 	}
 	return

+ 2 - 2
services/smartag/attach_network_optimization_sags.go

@@ -77,10 +77,10 @@ func (client *Client) AttachNetworkOptimizationSagsWithCallback(request *AttachN
 type AttachNetworkOptimizationSagsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	SmartAGIds           *[]string        `position:"Query" name:"SmartAGIds"  type:"Repeated"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 

+ 108 - 0
services/smartag/bind_serial_number.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// BindSerialNumber invokes the smartag.BindSerialNumber API synchronously
+// api document: https://help.aliyun.com/api/smartag/bindserialnumber.html
+func (client *Client) BindSerialNumber(request *BindSerialNumberRequest) (response *BindSerialNumberResponse, err error) {
+	response = CreateBindSerialNumberResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// BindSerialNumberWithChan invokes the smartag.BindSerialNumber API asynchronously
+// api document: https://help.aliyun.com/api/smartag/bindserialnumber.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) BindSerialNumberWithChan(request *BindSerialNumberRequest) (<-chan *BindSerialNumberResponse, <-chan error) {
+	responseChan := make(chan *BindSerialNumberResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.BindSerialNumber(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// BindSerialNumberWithCallback invokes the smartag.BindSerialNumber API asynchronously
+// api document: https://help.aliyun.com/api/smartag/bindserialnumber.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) BindSerialNumberWithCallback(request *BindSerialNumberRequest, callback func(response *BindSerialNumberResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *BindSerialNumberResponse
+		var err error
+		defer close(result)
+		response, err = client.BindSerialNumber(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// BindSerialNumberRequest is the request struct for api BindSerialNumber
+type BindSerialNumberRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SerialNumber         string           `position:"Query" name:"SerialNumber"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// BindSerialNumberResponse is the response struct for api BindSerialNumber
+type BindSerialNumberResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateBindSerialNumberRequest creates a request to invoke BindSerialNumber API
+func CreateBindSerialNumberRequest() (request *BindSerialNumberRequest) {
+	request = &BindSerialNumberRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "BindSerialNumber", "smartag", "openAPI")
+	return
+}
+
+// CreateBindSerialNumberResponse creates a response to parse from BindSerialNumber response
+func CreateBindSerialNumberResponse() (response *BindSerialNumberResponse) {
+	response = &BindSerialNumberResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 2
services/smartag/bind_smart_access_gateway.go

@@ -77,11 +77,12 @@ func (client *Client) BindSmartAccessGatewayWithCallback(request *BindSmartAcces
 type BindSmartAccessGatewayRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnId                string           `position:"Query" name:"CcnId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	CcnId                string           `position:"Query" name:"CcnId"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGUid           requests.Integer `position:"Query" name:"SmartAGUid"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // BindSmartAccessGatewayResponse is the response struct for api BindSmartAccessGateway

+ 28 - 28
services/smartag/create_dedicated_line_backup.go → services/smartag/bind_vbr.go

@@ -20,24 +20,24 @@ import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
 )
 
-// CreateDedicatedLineBackup invokes the smartag.CreateDedicatedLineBackup API synchronously
-// api document: https://help.aliyun.com/api/smartag/creatededicatedlinebackup.html
-func (client *Client) CreateDedicatedLineBackup(request *CreateDedicatedLineBackupRequest) (response *CreateDedicatedLineBackupResponse, err error) {
-	response = CreateCreateDedicatedLineBackupResponse()
+// BindVbr invokes the smartag.BindVbr API synchronously
+// api document: https://help.aliyun.com/api/smartag/bindvbr.html
+func (client *Client) BindVbr(request *BindVbrRequest) (response *BindVbrResponse, err error) {
+	response = CreateBindVbrResponse()
 	err = client.DoAction(request, response)
 	return
 }
 
-// CreateDedicatedLineBackupWithChan invokes the smartag.CreateDedicatedLineBackup API asynchronously
-// api document: https://help.aliyun.com/api/smartag/creatededicatedlinebackup.html
+// BindVbrWithChan invokes the smartag.BindVbr API asynchronously
+// api document: https://help.aliyun.com/api/smartag/bindvbr.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) CreateDedicatedLineBackupWithChan(request *CreateDedicatedLineBackupRequest) (<-chan *CreateDedicatedLineBackupResponse, <-chan error) {
-	responseChan := make(chan *CreateDedicatedLineBackupResponse, 1)
+func (client *Client) BindVbrWithChan(request *BindVbrRequest) (<-chan *BindVbrResponse, <-chan error) {
+	responseChan := make(chan *BindVbrResponse, 1)
 	errChan := make(chan error, 1)
 	err := client.AddAsyncTask(func() {
 		defer close(responseChan)
 		defer close(errChan)
-		response, err := client.CreateDedicatedLineBackup(request)
+		response, err := client.BindVbr(request)
 		if err != nil {
 			errChan <- err
 		} else {
@@ -52,16 +52,16 @@ func (client *Client) CreateDedicatedLineBackupWithChan(request *CreateDedicated
 	return responseChan, errChan
 }
 
-// CreateDedicatedLineBackupWithCallback invokes the smartag.CreateDedicatedLineBackup API asynchronously
-// api document: https://help.aliyun.com/api/smartag/creatededicatedlinebackup.html
+// BindVbrWithCallback invokes the smartag.BindVbr API asynchronously
+// api document: https://help.aliyun.com/api/smartag/bindvbr.html
 // asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) CreateDedicatedLineBackupWithCallback(request *CreateDedicatedLineBackupRequest, callback func(response *CreateDedicatedLineBackupResponse, err error)) <-chan int {
+func (client *Client) BindVbrWithCallback(request *BindVbrRequest, callback func(response *BindVbrResponse, err error)) <-chan int {
 	result := make(chan int, 1)
 	err := client.AddAsyncTask(func() {
-		var response *CreateDedicatedLineBackupResponse
+		var response *BindVbrResponse
 		var err error
 		defer close(result)
-		response, err = client.CreateDedicatedLineBackup(request)
+		response, err = client.BindVbr(request)
 		callback(response, err)
 		result <- 1
 	})
@@ -73,36 +73,36 @@ func (client *Client) CreateDedicatedLineBackupWithCallback(request *CreateDedic
 	return result
 }
 
-// CreateDedicatedLineBackupRequest is the request struct for api CreateDedicatedLineBackup
-type CreateDedicatedLineBackupRequest struct {
+// BindVbrRequest is the request struct for api BindVbr
+type BindVbrRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	VbrId                string           `position:"Query" name:"VbrId"`
+	VbrRegionId          string           `position:"Query" name:"VbrRegionId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	VbrId                string           `position:"Query" name:"VbrId"`
-	VbrRegionId          string           `position:"Query" name:"VbrRegionId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
-// CreateDedicatedLineBackupResponse is the response struct for api CreateDedicatedLineBackup
-type CreateDedicatedLineBackupResponse struct {
+// BindVbrResponse is the response struct for api BindVbr
+type BindVbrResponse struct {
 	*responses.BaseResponse
 	RequestId string `json:"RequestId" xml:"RequestId"`
 }
 
-// CreateCreateDedicatedLineBackupRequest creates a request to invoke CreateDedicatedLineBackup API
-func CreateCreateDedicatedLineBackupRequest() (request *CreateDedicatedLineBackupRequest) {
-	request = &CreateDedicatedLineBackupRequest{
+// CreateBindVbrRequest creates a request to invoke BindVbr API
+func CreateBindVbrRequest() (request *BindVbrRequest) {
+	request = &BindVbrRequest{
 		RpcRequest: &requests.RpcRequest{},
 	}
-	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateDedicatedLineBackup", "smartag", "openAPI")
+	request.InitWithApiInfo("Smartag", "2018-03-13", "BindVbr", "smartag", "openAPI")
 	return
 }
 
-// CreateCreateDedicatedLineBackupResponse creates a response to parse from CreateDedicatedLineBackup response
-func CreateCreateDedicatedLineBackupResponse() (response *CreateDedicatedLineBackupResponse) {
-	response = &CreateDedicatedLineBackupResponse{
+// CreateBindVbrResponse creates a response to parse from BindVbr response
+func CreateBindVbrResponse() (response *BindVbrResponse) {
+	response = &BindVbrResponse{
 		BaseResponse: &responses.BaseResponse{},
 	}
 	return

+ 1 - 1
services/smartag/clear_sag_routeable_address.go

@@ -79,9 +79,9 @@ type ClearSagRouteableAddressRequest struct {
 	AccessKeyId          string           `position:"Query" name:"access_key_id"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	SagId                string           `position:"Query" name:"SagId"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SagId                string           `position:"Query" name:"SagId"`
 }
 
 // ClearSagRouteableAddressResponse is the response struct for api ClearSagRouteableAddress

+ 25 - 0
services/smartag/client.go

@@ -16,6 +16,8 @@ package smartag
 // Changes may cause incorrect behavior and will be lost if the code is regenerated.
 
 import (
+	"reflect"
+
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
@@ -26,10 +28,25 @@ type Client struct {
 	sdk.Client
 }
 
+// SetClientProperty Set Property by Reflect
+func SetClientProperty(client *Client, propertyName string, propertyValue interface{}) {
+	v := reflect.ValueOf(client).Elem()
+	if v.FieldByName(propertyName).IsValid() && v.FieldByName(propertyName).CanSet() {
+		v.FieldByName(propertyName).Set(reflect.ValueOf(propertyValue))
+	}
+}
+
+// SetEndpointDataToClient Set EndpointMap and ENdpointType
+func SetEndpointDataToClient(client *Client) {
+	SetClientProperty(client, "EndpointMap", GetEndpointMap())
+	SetClientProperty(client, "EndpointType", GetEndpointType())
+}
+
 // NewClient creates a sdk client with environment variables
 func NewClient() (client *Client, err error) {
 	client = &Client{}
 	err = client.Init()
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -44,6 +61,7 @@ func NewClientWithProvider(regionId string, providers ...provider.Provider) (cli
 		pc = provider.NewProviderChain(providers)
 	}
 	err = client.InitWithProviderChain(regionId, pc)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -52,6 +70,7 @@ func NewClientWithProvider(regionId string, providers ...provider.Provider) (cli
 func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithOptions(regionId, config, credential)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -60,6 +79,7 @@ func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.C
 func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -68,6 +88,7 @@ func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (clie
 func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -76,6 +97,7 @@ func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToke
 func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -84,6 +106,7 @@ func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, role
 func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithRamRoleArnAndPolicy(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -92,6 +115,7 @@ func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySec
 func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithEcsRamRole(regionId, roleName)
+	SetEndpointDataToClient(client)
 	return
 }
 
@@ -100,5 +124,6 @@ func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client,
 func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)
+	SetEndpointDataToClient(client)
 	return
 }

+ 1 - 1
services/smartag/create_acl.go

@@ -79,8 +79,8 @@ type CreateACLRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Name                 string           `position:"Query" name:"Name"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
 }
 
 // CreateACLResponse is the response struct for api CreateACL

+ 4 - 4
services/smartag/create_cloud_connect_network.go

@@ -77,14 +77,14 @@ func (client *Client) CreateCloudConnectNetworkWithCallback(request *CreateCloud
 type CreateCloudConnectNetworkRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Name                 string           `position:"Query" name:"Name"`
-	CidrBlock            string           `position:"Query" name:"CidrBlock"`
 	Description          string           `position:"Query" name:"Description"`
 	SnatCidrBlock        string           `position:"Query" name:"SnatCidrBlock"`
 	IsDefault            requests.Boolean `position:"Query" name:"IsDefault"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
+	CidrBlock            string           `position:"Query" name:"CidrBlock"`
 }
 
 // CreateCloudConnectNetworkResponse is the response struct for api CreateCloudConnectNetwork

+ 118 - 0
services/smartag/create_flow_log.go

@@ -0,0 +1,118 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateFlowLog invokes the smartag.CreateFlowLog API synchronously
+// api document: https://help.aliyun.com/api/smartag/createflowlog.html
+func (client *Client) CreateFlowLog(request *CreateFlowLogRequest) (response *CreateFlowLogResponse, err error) {
+	response = CreateCreateFlowLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateFlowLogWithChan invokes the smartag.CreateFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowLogWithChan(request *CreateFlowLogRequest) (<-chan *CreateFlowLogResponse, <-chan error) {
+	responseChan := make(chan *CreateFlowLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateFlowLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateFlowLogWithCallback invokes the smartag.CreateFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateFlowLogWithCallback(request *CreateFlowLogRequest, callback func(response *CreateFlowLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateFlowLogResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateFlowLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateFlowLogRequest is the request struct for api CreateFlowLog
+type CreateFlowLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	NetflowVersion       string           `position:"Query" name:"NetflowVersion"`
+	Description          string           `position:"Query" name:"Description"`
+	InactiveAging        requests.Integer `position:"Query" name:"InactiveAging"`
+	SlsRegionId          string           `position:"Query" name:"SlsRegionId"`
+	ActiveAging          requests.Integer `position:"Query" name:"ActiveAging"`
+	OutputType           string           `position:"Query" name:"OutputType"`
+	ProjectName          string           `position:"Query" name:"ProjectName"`
+	LogstoreName         string           `position:"Query" name:"LogstoreName"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	NetflowServerPort    requests.Integer `position:"Query" name:"NetflowServerPort"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NetflowServerIp      string           `position:"Query" name:"NetflowServerIp"`
+	Name                 string           `position:"Query" name:"Name"`
+}
+
+// CreateFlowLogResponse is the response struct for api CreateFlowLog
+type CreateFlowLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	FlowLogId string `json:"FlowLogId" xml:"FlowLogId"`
+}
+
+// CreateCreateFlowLogRequest creates a request to invoke CreateFlowLog API
+func CreateCreateFlowLogRequest() (request *CreateFlowLogRequest) {
+	request = &CreateFlowLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateFlowLog", "smartag", "openAPI")
+	return
+}
+
+// CreateCreateFlowLogResponse creates a response to parse from CreateFlowLog response
+func CreateCreateFlowLogResponse() (response *CreateFlowLogResponse) {
+	response = &CreateFlowLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 137 - 0
services/smartag/create_health_check.go

@@ -0,0 +1,137 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateHealthCheck invokes the smartag.CreateHealthCheck API synchronously
+// api document: https://help.aliyun.com/api/smartag/createhealthcheck.html
+func (client *Client) CreateHealthCheck(request *CreateHealthCheckRequest) (response *CreateHealthCheckResponse, err error) {
+	response = CreateCreateHealthCheckResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateHealthCheckWithChan invokes the smartag.CreateHealthCheck API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createhealthcheck.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateHealthCheckWithChan(request *CreateHealthCheckRequest) (<-chan *CreateHealthCheckResponse, <-chan error) {
+	responseChan := make(chan *CreateHealthCheckResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateHealthCheck(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateHealthCheckWithCallback invokes the smartag.CreateHealthCheck API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createhealthcheck.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateHealthCheckWithCallback(request *CreateHealthCheckRequest, callback func(response *CreateHealthCheckResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateHealthCheckResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateHealthCheck(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateHealthCheckRequest is the request struct for api CreateHealthCheck
+type CreateHealthCheckRequest struct {
+	*requests.RpcRequest
+	ProbeInterval        requests.Integer `position:"Query" name:"ProbeInterval"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DstPort              requests.Integer `position:"Query" name:"DstPort"`
+	Description          string           `position:"Query" name:"Description"`
+	Type                 string           `position:"Query" name:"Type"`
+	FailCountThreshold   requests.Integer `position:"Query" name:"FailCountThreshold"`
+	ProbeTimeout         requests.Integer `position:"Query" name:"ProbeTimeout"`
+	RttFailThreshold     requests.Integer `position:"Query" name:"RttFailThreshold"`
+	RttThreshold         requests.Integer `position:"Query" name:"RttThreshold"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	DstIpAddr            string           `position:"Query" name:"DstIpAddr"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SrcIpAddr            string           `position:"Query" name:"SrcIpAddr"`
+	Name                 string           `position:"Query" name:"Name"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	SrcPort              requests.Integer `position:"Query" name:"SrcPort"`
+	ProbeCount           requests.Integer `position:"Query" name:"ProbeCount"`
+}
+
+// CreateHealthCheckResponse is the response struct for api CreateHealthCheck
+type CreateHealthCheckResponse struct {
+	*responses.BaseResponse
+	RequestId          string `json:"RequestId" xml:"RequestId"`
+	CreateTime         int64  `json:"CreateTime" xml:"CreateTime"`
+	InstanceId         string `json:"InstanceId" xml:"InstanceId"`
+	SmartAGId          string `json:"SmartAGId" xml:"SmartAGId"`
+	Name               string `json:"Name" xml:"Name"`
+	RegionId           string `json:"RegionId" xml:"RegionId"`
+	Description        string `json:"Description" xml:"Description"`
+	Type               string `json:"Type" xml:"Type"`
+	DstIpAddr          string `json:"DstIpAddr" xml:"DstIpAddr"`
+	DstPort            int    `json:"DstPort" xml:"DstPort"`
+	SrcIpAddr          string `json:"SrcIpAddr" xml:"SrcIpAddr"`
+	SrcPort            int    `json:"SrcPort" xml:"SrcPort"`
+	ProbeInterval      int    `json:"ProbeInterval" xml:"ProbeInterval"`
+	ProbeCount         int    `json:"ProbeCount" xml:"ProbeCount"`
+	ProbeTimeout       int    `json:"ProbeTimeout" xml:"ProbeTimeout"`
+	RttThreshold       int    `json:"RttThreshold" xml:"RttThreshold"`
+	RttFailThreshold   int    `json:"RttFailThreshold" xml:"RttFailThreshold"`
+	FailCountThreshold int    `json:"FailCountThreshold" xml:"FailCountThreshold"`
+}
+
+// CreateCreateHealthCheckRequest creates a request to invoke CreateHealthCheck API
+func CreateCreateHealthCheckRequest() (request *CreateHealthCheckRequest) {
+	request = &CreateHealthCheckRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateHealthCheck", "smartag", "openAPI")
+	return
+}
+
+// CreateCreateHealthCheckResponse creates a response to parse from CreateHealthCheck response
+func CreateCreateHealthCheckResponse() (response *CreateHealthCheckResponse) {
+	response = &CreateHealthCheckResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/smartag/create_network_optimization.go

@@ -77,11 +77,11 @@ func (client *Client) CreateNetworkOptimizationWithCallback(request *CreateNetwo
 type CreateNetworkOptimizationRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnId                string           `position:"Query" name:"CcnId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Name                 string           `position:"Query" name:"Name"`
-	CcnId                string           `position:"Query" name:"CcnId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
 }
 
 // CreateNetworkOptimizationResponse is the response struct for api CreateNetworkOptimization

+ 109 - 0
services/smartag/create_qos.go

@@ -0,0 +1,109 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateQos invokes the smartag.CreateQos API synchronously
+// api document: https://help.aliyun.com/api/smartag/createqos.html
+func (client *Client) CreateQos(request *CreateQosRequest) (response *CreateQosResponse, err error) {
+	response = CreateCreateQosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateQosWithChan invokes the smartag.CreateQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createqos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateQosWithChan(request *CreateQosRequest) (<-chan *CreateQosResponse, <-chan error) {
+	responseChan := make(chan *CreateQosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateQos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateQosWithCallback invokes the smartag.CreateQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createqos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateQosWithCallback(request *CreateQosRequest, callback func(response *CreateQosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateQosResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateQos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateQosRequest is the request struct for api CreateQos
+type CreateQosRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	QosName              string           `position:"Query" name:"QosName"`
+	QosDescription       string           `position:"Query" name:"QosDescription"`
+}
+
+// CreateQosResponse is the response struct for api CreateQos
+type CreateQosResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	QosId     string `json:"QosId" xml:"QosId"`
+}
+
+// CreateCreateQosRequest creates a request to invoke CreateQos API
+func CreateCreateQosRequest() (request *CreateQosRequest) {
+	request = &CreateQosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateQos", "smartag", "openAPI")
+	return
+}
+
+// CreateCreateQosResponse creates a response to parse from CreateQos response
+func CreateCreateQosResponse() (response *CreateQosResponse) {
+	response = &CreateQosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 126 - 0
services/smartag/create_qos_car.go

@@ -0,0 +1,126 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateQosCar invokes the smartag.CreateQosCar API synchronously
+// api document: https://help.aliyun.com/api/smartag/createqoscar.html
+func (client *Client) CreateQosCar(request *CreateQosCarRequest) (response *CreateQosCarResponse, err error) {
+	response = CreateCreateQosCarResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateQosCarWithChan invokes the smartag.CreateQosCar API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createqoscar.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateQosCarWithChan(request *CreateQosCarRequest) (<-chan *CreateQosCarResponse, <-chan error) {
+	responseChan := make(chan *CreateQosCarResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateQosCar(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateQosCarWithCallback invokes the smartag.CreateQosCar API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createqoscar.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateQosCarWithCallback(request *CreateQosCarRequest, callback func(response *CreateQosCarResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateQosCarResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateQosCar(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateQosCarRequest is the request struct for api CreateQosCar
+type CreateQosCarRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	MinBandwidthAbs      requests.Integer `position:"Query" name:"MinBandwidthAbs"`
+	Description          string           `position:"Query" name:"Description"`
+	PercentSourceType    string           `position:"Query" name:"PercentSourceType"`
+	QosId                string           `position:"Query" name:"QosId"`
+	MaxBandwidthAbs      requests.Integer `position:"Query" name:"MaxBandwidthAbs"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	MaxBandwidthPercent  requests.Integer `position:"Query" name:"MaxBandwidthPercent"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Priority             requests.Integer `position:"Query" name:"Priority"`
+	MinBandwidthPercent  requests.Integer `position:"Query" name:"MinBandwidthPercent"`
+	LimitType            string           `position:"Query" name:"LimitType"`
+	Name                 string           `position:"Query" name:"Name"`
+}
+
+// CreateQosCarResponse is the response struct for api CreateQosCar
+type CreateQosCarResponse struct {
+	*responses.BaseResponse
+	RequestId           string `json:"RequestId" xml:"RequestId"`
+	QosId               string `json:"QosId" xml:"QosId"`
+	QosCarId            string `json:"QosCarId" xml:"QosCarId"`
+	Description         string `json:"Description" xml:"Description"`
+	Priority            int    `json:"Priority" xml:"Priority"`
+	LimitType           string `json:"LimitType" xml:"LimitType"`
+	MinBandwidthAbs     int    `json:"MinBandwidthAbs" xml:"MinBandwidthAbs"`
+	MaxBandwidthAbs     int    `json:"MaxBandwidthAbs" xml:"MaxBandwidthAbs"`
+	MinBandwidthPercent int    `json:"MinBandwidthPercent" xml:"MinBandwidthPercent"`
+	MaxBandwidthPercent int    `json:"MaxBandwidthPercent" xml:"MaxBandwidthPercent"`
+	PercentSourceType   string `json:"PercentSourceType" xml:"PercentSourceType"`
+}
+
+// CreateCreateQosCarRequest creates a request to invoke CreateQosCar API
+func CreateCreateQosCarRequest() (request *CreateQosCarRequest) {
+	request = &CreateQosCarRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateQosCar", "smartag", "openAPI")
+	return
+}
+
+// CreateCreateQosCarResponse creates a response to parse from CreateQosCar response
+func CreateCreateQosCarResponse() (response *CreateQosCarResponse) {
+	response = &CreateQosCarResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 129 - 0
services/smartag/create_qos_policy.go

@@ -0,0 +1,129 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateQosPolicy invokes the smartag.CreateQosPolicy API synchronously
+// api document: https://help.aliyun.com/api/smartag/createqospolicy.html
+func (client *Client) CreateQosPolicy(request *CreateQosPolicyRequest) (response *CreateQosPolicyResponse, err error) {
+	response = CreateCreateQosPolicyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateQosPolicyWithChan invokes the smartag.CreateQosPolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createqospolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateQosPolicyWithChan(request *CreateQosPolicyRequest) (<-chan *CreateQosPolicyResponse, <-chan error) {
+	responseChan := make(chan *CreateQosPolicyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateQosPolicy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateQosPolicyWithCallback invokes the smartag.CreateQosPolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/createqospolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateQosPolicyWithCallback(request *CreateQosPolicyRequest, callback func(response *CreateQosPolicyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateQosPolicyResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateQosPolicy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateQosPolicyRequest is the request struct for api CreateQosPolicy
+type CreateQosPolicyRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SourcePortRange      string           `position:"Query" name:"SourcePortRange"`
+	SourceCidr           string           `position:"Query" name:"SourceCidr"`
+	Description          string           `position:"Query" name:"Description"`
+	StartTime            string           `position:"Query" name:"StartTime"`
+	DestCidr             string           `position:"Query" name:"DestCidr"`
+	QosId                string           `position:"Query" name:"QosId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	IpProtocol           string           `position:"Query" name:"IpProtocol"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	EndTime              string           `position:"Query" name:"EndTime"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Priority             requests.Integer `position:"Query" name:"Priority"`
+	DestPortRange        string           `position:"Query" name:"DestPortRange"`
+	Name                 string           `position:"Query" name:"Name"`
+}
+
+// CreateQosPolicyResponse is the response struct for api CreateQosPolicy
+type CreateQosPolicyResponse struct {
+	*responses.BaseResponse
+	RequestId       string `json:"RequestId" xml:"RequestId"`
+	QosId           string `json:"QosId" xml:"QosId"`
+	QosPolicyId     string `json:"QosPolicyId" xml:"QosPolicyId"`
+	Description     string `json:"Description" xml:"Description"`
+	Priority        int    `json:"Priority" xml:"Priority"`
+	SourceCidr      string `json:"SourceCidr" xml:"SourceCidr"`
+	DestCidr        string `json:"DestCidr" xml:"DestCidr"`
+	IpProtocol      string `json:"IpProtocol" xml:"IpProtocol"`
+	SourcePortRange string `json:"SourcePortRange" xml:"SourcePortRange"`
+	DestPortRange   string `json:"DestPortRange" xml:"DestPortRange"`
+	StartTime       string `json:"StartTime" xml:"StartTime"`
+	EndTime         string `json:"EndTime" xml:"EndTime"`
+	Name            string `json:"Name" xml:"Name"`
+}
+
+// CreateCreateQosPolicyRequest creates a request to invoke CreateQosPolicy API
+func CreateCreateQosPolicyRequest() (request *CreateQosPolicyRequest) {
+	request = &CreateQosPolicyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateQosPolicy", "smartag", "openAPI")
+	return
+}
+
+// CreateCreateQosPolicyResponse creates a response to parse from CreateQosPolicy response
+func CreateCreateQosPolicyResponse() (response *CreateQosPolicyResponse) {
+	response = &CreateQosPolicyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 0 - 112
services/smartag/create_sag_link_level_ha.go

@@ -1,112 +0,0 @@
-package smartag
-
-//Licensed under the Apache License, Version 2.0 (the "License");
-//you may not use this file except in compliance with the License.
-//You may obtain a copy of the License at
-//
-//http://www.apache.org/licenses/LICENSE-2.0
-//
-//Unless required by applicable law or agreed to in writing, software
-//distributed under the License is distributed on an "AS IS" BASIS,
-//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//See the License for the specific language governing permissions and
-//limitations under the License.
-//
-// Code generated by Alibaba Cloud SDK Code Generator.
-// Changes may cause incorrect behavior and will be lost if the code is regenerated.
-
-import (
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
-)
-
-// CreateSAGLinkLevelHa invokes the smartag.CreateSAGLinkLevelHa API synchronously
-// api document: https://help.aliyun.com/api/smartag/createsaglinklevelha.html
-func (client *Client) CreateSAGLinkLevelHa(request *CreateSAGLinkLevelHaRequest) (response *CreateSAGLinkLevelHaResponse, err error) {
-	response = CreateCreateSAGLinkLevelHaResponse()
-	err = client.DoAction(request, response)
-	return
-}
-
-// CreateSAGLinkLevelHaWithChan invokes the smartag.CreateSAGLinkLevelHa API asynchronously
-// api document: https://help.aliyun.com/api/smartag/createsaglinklevelha.html
-// asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) CreateSAGLinkLevelHaWithChan(request *CreateSAGLinkLevelHaRequest) (<-chan *CreateSAGLinkLevelHaResponse, <-chan error) {
-	responseChan := make(chan *CreateSAGLinkLevelHaResponse, 1)
-	errChan := make(chan error, 1)
-	err := client.AddAsyncTask(func() {
-		defer close(responseChan)
-		defer close(errChan)
-		response, err := client.CreateSAGLinkLevelHa(request)
-		if err != nil {
-			errChan <- err
-		} else {
-			responseChan <- response
-		}
-	})
-	if err != nil {
-		errChan <- err
-		close(responseChan)
-		close(errChan)
-	}
-	return responseChan, errChan
-}
-
-// CreateSAGLinkLevelHaWithCallback invokes the smartag.CreateSAGLinkLevelHa API asynchronously
-// api document: https://help.aliyun.com/api/smartag/createsaglinklevelha.html
-// asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) CreateSAGLinkLevelHaWithCallback(request *CreateSAGLinkLevelHaRequest, callback func(response *CreateSAGLinkLevelHaResponse, err error)) <-chan int {
-	result := make(chan int, 1)
-	err := client.AddAsyncTask(func() {
-		var response *CreateSAGLinkLevelHaResponse
-		var err error
-		defer close(result)
-		response, err = client.CreateSAGLinkLevelHa(request)
-		callback(response, err)
-		result <- 1
-	})
-	if err != nil {
-		defer close(result)
-		callback(nil, err)
-		result <- 0
-	}
-	return result
-}
-
-// CreateSAGLinkLevelHaRequest is the request struct for api CreateSAGLinkLevelHa
-type CreateSAGLinkLevelHaRequest struct {
-	*requests.RpcRequest
-	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	BackupLinkId         string           `position:"Query" name:"BackupLinkId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	HaType               string           `position:"Query" name:"HaType"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	MainLinkRegionId     string           `position:"Query" name:"MainLinkRegionId"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
-	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	MainLinkId           string           `position:"Query" name:"MainLinkId"`
-	BackupLinkRegionId   string           `position:"Query" name:"BackupLinkRegionId"`
-}
-
-// CreateSAGLinkLevelHaResponse is the response struct for api CreateSAGLinkLevelHa
-type CreateSAGLinkLevelHaResponse struct {
-	*responses.BaseResponse
-	RequestId string `json:"RequestId" xml:"RequestId"`
-}
-
-// CreateCreateSAGLinkLevelHaRequest creates a request to invoke CreateSAGLinkLevelHa API
-func CreateCreateSAGLinkLevelHaRequest() (request *CreateSAGLinkLevelHaRequest) {
-	request = &CreateSAGLinkLevelHaRequest{
-		RpcRequest: &requests.RpcRequest{},
-	}
-	request.InitWithApiInfo("Smartag", "2018-03-13", "CreateSAGLinkLevelHa", "smartag", "openAPI")
-	return
-}
-
-// CreateCreateSAGLinkLevelHaResponse creates a response to parse from CreateSAGLinkLevelHa response
-func CreateCreateSAGLinkLevelHaResponse() (response *CreateSAGLinkLevelHaResponse) {
-	response = &CreateSAGLinkLevelHaResponse{
-		BaseResponse: &responses.BaseResponse{},
-	}
-	return
-}

+ 3 - 2
services/smartag/create_smart_access_gateway_client_user.go

@@ -77,13 +77,14 @@ func (client *Client) CreateSmartAccessGatewayClientUserWithCallback(request *Cr
 type CreateSmartAccessGatewayClientUserRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Password             string           `position:"Query" name:"Password"`
+	ClientIp             string           `position:"Query" name:"ClientIp"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	Bandwidth            requests.Integer `position:"Query" name:"Bandwidth"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	ClientIp             string           `position:"Query" name:"ClientIp"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	UserMail             string           `position:"Query" name:"UserMail"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	UserName             string           `position:"Query" name:"UserName"`
 }
 

+ 2 - 2
services/smartag/create_smart_access_gateway_software.go

@@ -77,13 +77,13 @@ func (client *Client) CreateSmartAccessGatewaySoftwareWithCallback(request *Crea
 type CreateSmartAccessGatewaySoftwareRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	UserCount            requests.Integer `position:"Query" name:"UserCount"`
 	Period               requests.Integer `position:"Query" name:"Period"`
 	AutoPay              requests.Boolean `position:"Query" name:"AutoPay"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	UserCount            requests.Integer `position:"Query" name:"UserCount"`
-	ChargeType           string           `position:"Query" name:"ChargeType"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ChargeType           string           `position:"Query" name:"ChargeType"`
 	DataPlan             requests.Integer `position:"Query" name:"DataPlan"`
 }
 

+ 107 - 0
services/smartag/deactive_flow_log.go

@@ -0,0 +1,107 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeactiveFlowLog invokes the smartag.DeactiveFlowLog API synchronously
+// api document: https://help.aliyun.com/api/smartag/deactiveflowlog.html
+func (client *Client) DeactiveFlowLog(request *DeactiveFlowLogRequest) (response *DeactiveFlowLogResponse, err error) {
+	response = CreateDeactiveFlowLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeactiveFlowLogWithChan invokes the smartag.DeactiveFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deactiveflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeactiveFlowLogWithChan(request *DeactiveFlowLogRequest) (<-chan *DeactiveFlowLogResponse, <-chan error) {
+	responseChan := make(chan *DeactiveFlowLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeactiveFlowLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeactiveFlowLogWithCallback invokes the smartag.DeactiveFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deactiveflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeactiveFlowLogWithCallback(request *DeactiveFlowLogRequest, callback func(response *DeactiveFlowLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeactiveFlowLogResponse
+		var err error
+		defer close(result)
+		response, err = client.DeactiveFlowLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeactiveFlowLogRequest is the request struct for api DeactiveFlowLog
+type DeactiveFlowLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+}
+
+// DeactiveFlowLogResponse is the response struct for api DeactiveFlowLog
+type DeactiveFlowLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeactiveFlowLogRequest creates a request to invoke DeactiveFlowLog API
+func CreateDeactiveFlowLogRequest() (request *DeactiveFlowLogRequest) {
+	request = &DeactiveFlowLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeactiveFlowLog", "smartag", "openAPI")
+	return
+}
+
+// CreateDeactiveFlowLogResponse creates a response to parse from DeactiveFlowLog response
+func CreateDeactiveFlowLogResponse() (response *DeactiveFlowLogResponse) {
+	response = &DeactiveFlowLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/delete_acl.go

@@ -76,8 +76,8 @@ func (client *Client) DeleteACLWithCallback(request *DeleteACLRequest, callback
 // DeleteACLRequest is the request struct for api DeleteACL
 type DeleteACLRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`

+ 1 - 1
services/smartag/delete_acl_rule.go

@@ -76,8 +76,8 @@ func (client *Client) DeleteACLRuleWithCallback(request *DeleteACLRuleRequest, c
 // DeleteACLRuleRequest is the request struct for api DeleteACLRule
 type DeleteACLRuleRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`

+ 1 - 1
services/smartag/delete_cloud_connect_network.go

@@ -77,9 +77,9 @@ func (client *Client) DeleteCloudConnectNetworkWithCallback(request *DeleteCloud
 type DeleteCloudConnectNetworkRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnId                string           `position:"Query" name:"CcnId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	CcnId                string           `position:"Query" name:"CcnId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 

+ 0 - 107
services/smartag/delete_dedicated_line_backup.go

@@ -1,107 +0,0 @@
-package smartag
-
-//Licensed under the Apache License, Version 2.0 (the "License");
-//you may not use this file except in compliance with the License.
-//You may obtain a copy of the License at
-//
-//http://www.apache.org/licenses/LICENSE-2.0
-//
-//Unless required by applicable law or agreed to in writing, software
-//distributed under the License is distributed on an "AS IS" BASIS,
-//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//See the License for the specific language governing permissions and
-//limitations under the License.
-//
-// Code generated by Alibaba Cloud SDK Code Generator.
-// Changes may cause incorrect behavior and will be lost if the code is regenerated.
-
-import (
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
-	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
-)
-
-// DeleteDedicatedLineBackup invokes the smartag.DeleteDedicatedLineBackup API synchronously
-// api document: https://help.aliyun.com/api/smartag/deletededicatedlinebackup.html
-func (client *Client) DeleteDedicatedLineBackup(request *DeleteDedicatedLineBackupRequest) (response *DeleteDedicatedLineBackupResponse, err error) {
-	response = CreateDeleteDedicatedLineBackupResponse()
-	err = client.DoAction(request, response)
-	return
-}
-
-// DeleteDedicatedLineBackupWithChan invokes the smartag.DeleteDedicatedLineBackup API asynchronously
-// api document: https://help.aliyun.com/api/smartag/deletededicatedlinebackup.html
-// asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) DeleteDedicatedLineBackupWithChan(request *DeleteDedicatedLineBackupRequest) (<-chan *DeleteDedicatedLineBackupResponse, <-chan error) {
-	responseChan := make(chan *DeleteDedicatedLineBackupResponse, 1)
-	errChan := make(chan error, 1)
-	err := client.AddAsyncTask(func() {
-		defer close(responseChan)
-		defer close(errChan)
-		response, err := client.DeleteDedicatedLineBackup(request)
-		if err != nil {
-			errChan <- err
-		} else {
-			responseChan <- response
-		}
-	})
-	if err != nil {
-		errChan <- err
-		close(responseChan)
-		close(errChan)
-	}
-	return responseChan, errChan
-}
-
-// DeleteDedicatedLineBackupWithCallback invokes the smartag.DeleteDedicatedLineBackup API asynchronously
-// api document: https://help.aliyun.com/api/smartag/deletededicatedlinebackup.html
-// asynchronous document: https://help.aliyun.com/document_detail/66220.html
-func (client *Client) DeleteDedicatedLineBackupWithCallback(request *DeleteDedicatedLineBackupRequest, callback func(response *DeleteDedicatedLineBackupResponse, err error)) <-chan int {
-	result := make(chan int, 1)
-	err := client.AddAsyncTask(func() {
-		var response *DeleteDedicatedLineBackupResponse
-		var err error
-		defer close(result)
-		response, err = client.DeleteDedicatedLineBackup(request)
-		callback(response, err)
-		result <- 1
-	})
-	if err != nil {
-		defer close(result)
-		callback(nil, err)
-		result <- 0
-	}
-	return result
-}
-
-// DeleteDedicatedLineBackupRequest is the request struct for api DeleteDedicatedLineBackup
-type DeleteDedicatedLineBackupRequest struct {
-	*requests.RpcRequest
-	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
-	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-}
-
-// DeleteDedicatedLineBackupResponse is the response struct for api DeleteDedicatedLineBackup
-type DeleteDedicatedLineBackupResponse struct {
-	*responses.BaseResponse
-	RequestId string `json:"RequestId" xml:"RequestId"`
-}
-
-// CreateDeleteDedicatedLineBackupRequest creates a request to invoke DeleteDedicatedLineBackup API
-func CreateDeleteDedicatedLineBackupRequest() (request *DeleteDedicatedLineBackupRequest) {
-	request = &DeleteDedicatedLineBackupRequest{
-		RpcRequest: &requests.RpcRequest{},
-	}
-	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteDedicatedLineBackup", "smartag", "openAPI")
-	return
-}
-
-// CreateDeleteDedicatedLineBackupResponse creates a response to parse from DeleteDedicatedLineBackup response
-func CreateDeleteDedicatedLineBackupResponse() (response *DeleteDedicatedLineBackupResponse) {
-	response = &DeleteDedicatedLineBackupResponse{
-		BaseResponse: &responses.BaseResponse{},
-	}
-	return
-}

+ 108 - 0
services/smartag/delete_dnat_entry.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteDnatEntry invokes the smartag.DeleteDnatEntry API synchronously
+// api document: https://help.aliyun.com/api/smartag/deletednatentry.html
+func (client *Client) DeleteDnatEntry(request *DeleteDnatEntryRequest) (response *DeleteDnatEntryResponse, err error) {
+	response = CreateDeleteDnatEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteDnatEntryWithChan invokes the smartag.DeleteDnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletednatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteDnatEntryWithChan(request *DeleteDnatEntryRequest) (<-chan *DeleteDnatEntryResponse, <-chan error) {
+	responseChan := make(chan *DeleteDnatEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteDnatEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteDnatEntryWithCallback invokes the smartag.DeleteDnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletednatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteDnatEntryWithCallback(request *DeleteDnatEntryRequest, callback func(response *DeleteDnatEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteDnatEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteDnatEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteDnatEntryRequest is the request struct for api DeleteDnatEntry
+type DeleteDnatEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DnatEntryId          string           `position:"Query" name:"DnatEntryId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SagId                string           `position:"Query" name:"SagId"`
+}
+
+// DeleteDnatEntryResponse is the response struct for api DeleteDnatEntry
+type DeleteDnatEntryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteDnatEntryRequest creates a request to invoke DeleteDnatEntry API
+func CreateDeleteDnatEntryRequest() (request *DeleteDnatEntryRequest) {
+	request = &DeleteDnatEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteDnatEntry", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteDnatEntryResponse creates a response to parse from DeleteDnatEntry response
+func CreateDeleteDnatEntryResponse() (response *DeleteDnatEntryResponse) {
+	response = &DeleteDnatEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/smartag/delete_flow_log.go

@@ -0,0 +1,107 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteFlowLog invokes the smartag.DeleteFlowLog API synchronously
+// api document: https://help.aliyun.com/api/smartag/deleteflowlog.html
+func (client *Client) DeleteFlowLog(request *DeleteFlowLogRequest) (response *DeleteFlowLogResponse, err error) {
+	response = CreateDeleteFlowLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteFlowLogWithChan invokes the smartag.DeleteFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowLogWithChan(request *DeleteFlowLogRequest) (<-chan *DeleteFlowLogResponse, <-chan error) {
+	responseChan := make(chan *DeleteFlowLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteFlowLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteFlowLogWithCallback invokes the smartag.DeleteFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteFlowLogWithCallback(request *DeleteFlowLogRequest, callback func(response *DeleteFlowLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteFlowLogResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteFlowLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteFlowLogRequest is the request struct for api DeleteFlowLog
+type DeleteFlowLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+}
+
+// DeleteFlowLogResponse is the response struct for api DeleteFlowLog
+type DeleteFlowLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteFlowLogRequest creates a request to invoke DeleteFlowLog API
+func CreateDeleteFlowLogRequest() (request *DeleteFlowLogRequest) {
+	request = &DeleteFlowLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteFlowLog", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteFlowLogResponse creates a response to parse from DeleteFlowLog response
+func CreateDeleteFlowLogResponse() (response *DeleteFlowLogResponse) {
+	response = &DeleteFlowLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/smartag/delete_health_check.go

@@ -0,0 +1,107 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteHealthCheck invokes the smartag.DeleteHealthCheck API synchronously
+// api document: https://help.aliyun.com/api/smartag/deletehealthcheck.html
+func (client *Client) DeleteHealthCheck(request *DeleteHealthCheckRequest) (response *DeleteHealthCheckResponse, err error) {
+	response = CreateDeleteHealthCheckResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteHealthCheckWithChan invokes the smartag.DeleteHealthCheck API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletehealthcheck.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteHealthCheckWithChan(request *DeleteHealthCheckRequest) (<-chan *DeleteHealthCheckResponse, <-chan error) {
+	responseChan := make(chan *DeleteHealthCheckResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteHealthCheck(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteHealthCheckWithCallback invokes the smartag.DeleteHealthCheck API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletehealthcheck.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteHealthCheckWithCallback(request *DeleteHealthCheckRequest, callback func(response *DeleteHealthCheckResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteHealthCheckResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteHealthCheck(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteHealthCheckRequest is the request struct for api DeleteHealthCheck
+type DeleteHealthCheckRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HcInstanceId         string           `position:"Query" name:"HcInstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteHealthCheckResponse is the response struct for api DeleteHealthCheck
+type DeleteHealthCheckResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteHealthCheckRequest creates a request to invoke DeleteHealthCheck API
+func CreateDeleteHealthCheckRequest() (request *DeleteHealthCheckRequest) {
+	request = &DeleteHealthCheckRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteHealthCheck", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteHealthCheckResponse creates a response to parse from DeleteHealthCheck response
+func CreateDeleteHealthCheckResponse() (response *DeleteHealthCheckResponse) {
+	response = &DeleteHealthCheckResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/delete_network_optimization.go

@@ -77,8 +77,8 @@ func (client *Client) DeleteNetworkOptimizationWithCallback(request *DeleteNetwo
 type DeleteNetworkOptimizationRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }

+ 3 - 3
services/smartag/delete_network_optimization_setting.go

@@ -77,12 +77,12 @@ func (client *Client) DeleteNetworkOptimizationSettingWithCallback(request *Dele
 type DeleteNetworkOptimizationSettingRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Type                 string           `position:"Query" name:"Type"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Domain               string           `position:"Query" name:"Domain"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	Type                 string           `position:"Query" name:"Type"`
+	Domain               string           `position:"Query" name:"Domain"`
 }
 
 // DeleteNetworkOptimizationSettingResponse is the response struct for api DeleteNetworkOptimizationSetting

+ 107 - 0
services/smartag/delete_qos.go

@@ -0,0 +1,107 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteQos invokes the smartag.DeleteQos API synchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqos.html
+func (client *Client) DeleteQos(request *DeleteQosRequest) (response *DeleteQosResponse, err error) {
+	response = CreateDeleteQosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteQosWithChan invokes the smartag.DeleteQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteQosWithChan(request *DeleteQosRequest) (<-chan *DeleteQosResponse, <-chan error) {
+	responseChan := make(chan *DeleteQosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteQos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteQosWithCallback invokes the smartag.DeleteQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteQosWithCallback(request *DeleteQosRequest, callback func(response *DeleteQosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteQosResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteQos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteQosRequest is the request struct for api DeleteQos
+type DeleteQosRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	QosId                string           `position:"Query" name:"QosId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteQosResponse is the response struct for api DeleteQos
+type DeleteQosResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteQosRequest creates a request to invoke DeleteQos API
+func CreateDeleteQosRequest() (request *DeleteQosRequest) {
+	request = &DeleteQosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteQos", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteQosResponse creates a response to parse from DeleteQos response
+func CreateDeleteQosResponse() (response *DeleteQosResponse) {
+	response = &DeleteQosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/smartag/delete_qos_car.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteQosCar invokes the smartag.DeleteQosCar API synchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqoscar.html
+func (client *Client) DeleteQosCar(request *DeleteQosCarRequest) (response *DeleteQosCarResponse, err error) {
+	response = CreateDeleteQosCarResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteQosCarWithChan invokes the smartag.DeleteQosCar API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqoscar.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteQosCarWithChan(request *DeleteQosCarRequest) (<-chan *DeleteQosCarResponse, <-chan error) {
+	responseChan := make(chan *DeleteQosCarResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteQosCar(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteQosCarWithCallback invokes the smartag.DeleteQosCar API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqoscar.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteQosCarWithCallback(request *DeleteQosCarRequest, callback func(response *DeleteQosCarResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteQosCarResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteQosCar(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteQosCarRequest is the request struct for api DeleteQosCar
+type DeleteQosCarRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	QosId                string           `position:"Query" name:"QosId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	QosCarId             string           `position:"Query" name:"QosCarId"`
+}
+
+// DeleteQosCarResponse is the response struct for api DeleteQosCar
+type DeleteQosCarResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteQosCarRequest creates a request to invoke DeleteQosCar API
+func CreateDeleteQosCarRequest() (request *DeleteQosCarRequest) {
+	request = &DeleteQosCarRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteQosCar", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteQosCarResponse creates a response to parse from DeleteQosCar response
+func CreateDeleteQosCarResponse() (response *DeleteQosCarResponse) {
+	response = &DeleteQosCarResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/smartag/delete_qos_policy.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteQosPolicy invokes the smartag.DeleteQosPolicy API synchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqospolicy.html
+func (client *Client) DeleteQosPolicy(request *DeleteQosPolicyRequest) (response *DeleteQosPolicyResponse, err error) {
+	response = CreateDeleteQosPolicyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteQosPolicyWithChan invokes the smartag.DeleteQosPolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqospolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteQosPolicyWithChan(request *DeleteQosPolicyRequest) (<-chan *DeleteQosPolicyResponse, <-chan error) {
+	responseChan := make(chan *DeleteQosPolicyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteQosPolicy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteQosPolicyWithCallback invokes the smartag.DeleteQosPolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteqospolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteQosPolicyWithCallback(request *DeleteQosPolicyRequest, callback func(response *DeleteQosPolicyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteQosPolicyResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteQosPolicy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteQosPolicyRequest is the request struct for api DeleteQosPolicy
+type DeleteQosPolicyRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	QosPolicyId          string           `position:"Query" name:"QosPolicyId"`
+	QosId                string           `position:"Query" name:"QosId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteQosPolicyResponse is the response struct for api DeleteQosPolicy
+type DeleteQosPolicyResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteQosPolicyRequest creates a request to invoke DeleteQosPolicy API
+func CreateDeleteQosPolicyRequest() (request *DeleteQosPolicyRequest) {
+	request = &DeleteQosPolicyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteQosPolicy", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteQosPolicyResponse creates a response to parse from DeleteQosPolicy response
+func CreateDeleteQosPolicyResponse() (response *DeleteQosPolicyResponse) {
+	response = &DeleteQosPolicyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/smartag/delete_route_distribution_strategy.go

@@ -0,0 +1,110 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteRouteDistributionStrategy invokes the smartag.DeleteRouteDistributionStrategy API synchronously
+// api document: https://help.aliyun.com/api/smartag/deleteroutedistributionstrategy.html
+func (client *Client) DeleteRouteDistributionStrategy(request *DeleteRouteDistributionStrategyRequest) (response *DeleteRouteDistributionStrategyResponse, err error) {
+	response = CreateDeleteRouteDistributionStrategyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteRouteDistributionStrategyWithChan invokes the smartag.DeleteRouteDistributionStrategy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteroutedistributionstrategy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteRouteDistributionStrategyWithChan(request *DeleteRouteDistributionStrategyRequest) (<-chan *DeleteRouteDistributionStrategyResponse, <-chan error) {
+	responseChan := make(chan *DeleteRouteDistributionStrategyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteRouteDistributionStrategy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteRouteDistributionStrategyWithCallback invokes the smartag.DeleteRouteDistributionStrategy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deleteroutedistributionstrategy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteRouteDistributionStrategyWithCallback(request *DeleteRouteDistributionStrategyRequest, callback func(response *DeleteRouteDistributionStrategyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteRouteDistributionStrategyResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteRouteDistributionStrategy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteRouteDistributionStrategyRequest is the request struct for api DeleteRouteDistributionStrategy
+type DeleteRouteDistributionStrategyRequest struct {
+	*requests.RpcRequest
+	RouteSource          string           `position:"Query" name:"RouteSource"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SourceType           string           `position:"Query" name:"SourceType"`
+	DestCidrBlock        string           `position:"Query" name:"DestCidrBlock"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DeleteRouteDistributionStrategyResponse is the response struct for api DeleteRouteDistributionStrategy
+type DeleteRouteDistributionStrategyResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteRouteDistributionStrategyRequest creates a request to invoke DeleteRouteDistributionStrategy API
+func CreateDeleteRouteDistributionStrategyRequest() (request *DeleteRouteDistributionStrategyRequest) {
+	request = &DeleteRouteDistributionStrategyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteRouteDistributionStrategy", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteRouteDistributionStrategyResponse creates a response to parse from DeleteRouteDistributionStrategy response
+func CreateDeleteRouteDistributionStrategyResponse() (response *DeleteRouteDistributionStrategyResponse) {
+	response = &DeleteRouteDistributionStrategyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/smartag/delete_sag_cidr.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteSagCidr invokes the smartag.DeleteSagCidr API synchronously
+// api document: https://help.aliyun.com/api/smartag/deletesagcidr.html
+func (client *Client) DeleteSagCidr(request *DeleteSagCidrRequest) (response *DeleteSagCidrResponse, err error) {
+	response = CreateDeleteSagCidrResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteSagCidrWithChan invokes the smartag.DeleteSagCidr API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletesagcidr.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteSagCidrWithChan(request *DeleteSagCidrRequest) (<-chan *DeleteSagCidrResponse, <-chan error) {
+	responseChan := make(chan *DeleteSagCidrResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteSagCidr(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteSagCidrWithCallback invokes the smartag.DeleteSagCidr API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletesagcidr.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteSagCidrWithCallback(request *DeleteSagCidrRequest, callback func(response *DeleteSagCidrResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteSagCidrResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteSagCidr(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteSagCidrRequest is the request struct for api DeleteSagCidr
+type DeleteSagCidrRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Cidr                 string           `position:"Query" name:"Cidr"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DeleteSagCidrResponse is the response struct for api DeleteSagCidr
+type DeleteSagCidrResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteSagCidrRequest creates a request to invoke DeleteSagCidr API
+func CreateDeleteSagCidrRequest() (request *DeleteSagCidrRequest) {
+	request = &DeleteSagCidrRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteSagCidr", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteSagCidrResponse creates a response to parse from DeleteSagCidr response
+func CreateDeleteSagCidrResponse() (response *DeleteSagCidrResponse) {
+	response = &DeleteSagCidrResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/delete_smart_access_gateway_client_user.go

@@ -79,8 +79,8 @@ type DeleteSmartAccessGatewayClientUserRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	UserName             string           `position:"Query" name:"UserName"`
 }
 

+ 108 - 0
services/smartag/delete_snat_entry.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteSnatEntry invokes the smartag.DeleteSnatEntry API synchronously
+// api document: https://help.aliyun.com/api/smartag/deletesnatentry.html
+func (client *Client) DeleteSnatEntry(request *DeleteSnatEntryRequest) (response *DeleteSnatEntryResponse, err error) {
+	response = CreateDeleteSnatEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteSnatEntryWithChan invokes the smartag.DeleteSnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletesnatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteSnatEntryWithChan(request *DeleteSnatEntryRequest) (<-chan *DeleteSnatEntryResponse, <-chan error) {
+	responseChan := make(chan *DeleteSnatEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteSnatEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteSnatEntryWithCallback invokes the smartag.DeleteSnatEntry API asynchronously
+// api document: https://help.aliyun.com/api/smartag/deletesnatentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteSnatEntryWithCallback(request *DeleteSnatEntryRequest, callback func(response *DeleteSnatEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteSnatEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteSnatEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteSnatEntryRequest is the request struct for api DeleteSnatEntry
+type DeleteSnatEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DeleteSnatEntryResponse is the response struct for api DeleteSnatEntry
+type DeleteSnatEntryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteSnatEntryRequest creates a request to invoke DeleteSnatEntry API
+func CreateDeleteSnatEntryRequest() (request *DeleteSnatEntryRequest) {
+	request = &DeleteSnatEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DeleteSnatEntry", "smartag", "openAPI")
+	return
+}
+
+// CreateDeleteSnatEntryResponse creates a response to parse from DeleteSnatEntry response
+func CreateDeleteSnatEntryResponse() (response *DeleteSnatEntryResponse) {
+	response = &DeleteSnatEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 4 - 4
services/smartag/describe_ac_ls.go

@@ -77,13 +77,13 @@ func (client *Client) DescribeACLsWithCallback(request *DescribeACLsRequest, cal
 type DescribeACLsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	AclIds               string           `position:"Query" name:"AclIds"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Name                 string           `position:"Query" name:"Name"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
 	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	Name                 string           `position:"Query" name:"Name"`
 }
 
 // DescribeACLsResponse is the response struct for api DescribeACLs

+ 5 - 5
services/smartag/describe_acl_attribute.go

@@ -76,15 +76,15 @@ func (client *Client) DescribeACLAttributeWithCallback(request *DescribeACLAttri
 // DescribeACLAttributeRequest is the request struct for api DescribeACLAttribute
 type DescribeACLAttributeRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	PageSize             requests.Integer `position:"Query" name:"PageSize"`
-	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
 	Direction            string           `position:"Query" name:"Direction"`
 	Order                string           `position:"Query" name:"Order"`
+	AclId                string           `position:"Query" name:"AclId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 
 // DescribeACLAttributeResponse is the response struct for api DescribeACLAttribute

+ 114 - 0
services/smartag/describe_bindable_smart_access_gateways.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeBindableSmartAccessGateways invokes the smartag.DescribeBindableSmartAccessGateways API synchronously
+// api document: https://help.aliyun.com/api/smartag/describebindablesmartaccessgateways.html
+func (client *Client) DescribeBindableSmartAccessGateways(request *DescribeBindableSmartAccessGatewaysRequest) (response *DescribeBindableSmartAccessGatewaysResponse, err error) {
+	response = CreateDescribeBindableSmartAccessGatewaysResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeBindableSmartAccessGatewaysWithChan invokes the smartag.DescribeBindableSmartAccessGateways API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describebindablesmartaccessgateways.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeBindableSmartAccessGatewaysWithChan(request *DescribeBindableSmartAccessGatewaysRequest) (<-chan *DescribeBindableSmartAccessGatewaysResponse, <-chan error) {
+	responseChan := make(chan *DescribeBindableSmartAccessGatewaysResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeBindableSmartAccessGateways(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeBindableSmartAccessGatewaysWithCallback invokes the smartag.DescribeBindableSmartAccessGateways API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describebindablesmartaccessgateways.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeBindableSmartAccessGatewaysWithCallback(request *DescribeBindableSmartAccessGatewaysRequest, callback func(response *DescribeBindableSmartAccessGatewaysResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeBindableSmartAccessGatewaysResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeBindableSmartAccessGateways(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeBindableSmartAccessGatewaysRequest is the request struct for api DescribeBindableSmartAccessGateways
+type DescribeBindableSmartAccessGatewaysRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnId                string           `position:"Query" name:"CcnId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	CrossAccount         requests.Boolean `position:"Query" name:"CrossAccount"`
+}
+
+// DescribeBindableSmartAccessGatewaysResponse is the response struct for api DescribeBindableSmartAccessGateways
+type DescribeBindableSmartAccessGatewaysResponse struct {
+	*responses.BaseResponse
+	RequestId           string                                                   `json:"RequestId" xml:"RequestId"`
+	TotalCount          int                                                      `json:"TotalCount" xml:"TotalCount"`
+	PageNumber          int                                                      `json:"PageNumber" xml:"PageNumber"`
+	PageSize            int                                                      `json:"PageSize" xml:"PageSize"`
+	SmartAccessGateways SmartAccessGatewaysInDescribeBindableSmartAccessGateways `json:"SmartAccessGateways" xml:"SmartAccessGateways"`
+}
+
+// CreateDescribeBindableSmartAccessGatewaysRequest creates a request to invoke DescribeBindableSmartAccessGateways API
+func CreateDescribeBindableSmartAccessGatewaysRequest() (request *DescribeBindableSmartAccessGatewaysRequest) {
+	request = &DescribeBindableSmartAccessGatewaysRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeBindableSmartAccessGateways", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeBindableSmartAccessGatewaysResponse creates a response to parse from DescribeBindableSmartAccessGateways response
+func CreateDescribeBindableSmartAccessGatewaysResponse() (response *DescribeBindableSmartAccessGatewaysResponse) {
+	response = &DescribeBindableSmartAccessGatewaysResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 5 - 5
services/smartag/describe_cloud_connect_networks.go

@@ -77,14 +77,14 @@ func (client *Client) DescribeCloudConnectNetworksWithCallback(request *Describe
 type DescribeCloudConnectNetworksRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer                   `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string                             `position:"Query" name:"ResourceOwnerAccount"`
-	OwnerAccount         string                             `position:"Query" name:"OwnerAccount"`
-	Name                 string                             `position:"Query" name:"Name"`
 	CcnId                string                             `position:"Query" name:"CcnId"`
-	PageSize             string                             `position:"Query" name:"PageSize"`
+	PageNumber           requests.Integer                   `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer                   `position:"Query" name:"PageSize"`
 	Tag                  *[]DescribeCloudConnectNetworksTag `position:"Query" name:"Tag"  type:"Repeated"`
+	ResourceOwnerAccount string                             `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string                             `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer                   `position:"Query" name:"OwnerId"`
-	PageNumber           string                             `position:"Query" name:"PageNumber"`
+	Name                 string                             `position:"Query" name:"Name"`
 }
 
 // DescribeCloudConnectNetworksTag is a repeated param struct in DescribeCloudConnectNetworksRequest

+ 114 - 0
services/smartag/describe_device_auto_upgrade_policy.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeDeviceAutoUpgradePolicy invokes the smartag.DescribeDeviceAutoUpgradePolicy API synchronously
+// api document: https://help.aliyun.com/api/smartag/describedeviceautoupgradepolicy.html
+func (client *Client) DescribeDeviceAutoUpgradePolicy(request *DescribeDeviceAutoUpgradePolicyRequest) (response *DescribeDeviceAutoUpgradePolicyResponse, err error) {
+	response = CreateDescribeDeviceAutoUpgradePolicyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDeviceAutoUpgradePolicyWithChan invokes the smartag.DescribeDeviceAutoUpgradePolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describedeviceautoupgradepolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDeviceAutoUpgradePolicyWithChan(request *DescribeDeviceAutoUpgradePolicyRequest) (<-chan *DescribeDeviceAutoUpgradePolicyResponse, <-chan error) {
+	responseChan := make(chan *DescribeDeviceAutoUpgradePolicyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDeviceAutoUpgradePolicy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDeviceAutoUpgradePolicyWithCallback invokes the smartag.DescribeDeviceAutoUpgradePolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describedeviceautoupgradepolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDeviceAutoUpgradePolicyWithCallback(request *DescribeDeviceAutoUpgradePolicyRequest, callback func(response *DescribeDeviceAutoUpgradePolicyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDeviceAutoUpgradePolicyResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDeviceAutoUpgradePolicy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDeviceAutoUpgradePolicyRequest is the request struct for api DescribeDeviceAutoUpgradePolicy
+type DescribeDeviceAutoUpgradePolicyRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SerialNumber         string           `position:"Query" name:"SerialNumber"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeDeviceAutoUpgradePolicyResponse is the response struct for api DescribeDeviceAutoUpgradePolicy
+type DescribeDeviceAutoUpgradePolicyResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId" xml:"RequestId"`
+	SmartAGId      string `json:"SmartAGId" xml:"SmartAGId"`
+	SerialNumber   string `json:"SerialNumber" xml:"SerialNumber"`
+	UpgradeType    string `json:"UpgradeType" xml:"UpgradeType"`
+	CronExpression string `json:"CronExpression" xml:"CronExpression"`
+	Duration       string `json:"Duration" xml:"Duration"`
+	TimeZone       string `json:"TimeZone" xml:"TimeZone"`
+}
+
+// CreateDescribeDeviceAutoUpgradePolicyRequest creates a request to invoke DescribeDeviceAutoUpgradePolicy API
+func CreateDescribeDeviceAutoUpgradePolicyRequest() (request *DescribeDeviceAutoUpgradePolicyRequest) {
+	request = &DescribeDeviceAutoUpgradePolicyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeDeviceAutoUpgradePolicy", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeDeviceAutoUpgradePolicyResponse creates a response to parse from DescribeDeviceAutoUpgradePolicy response
+func CreateDescribeDeviceAutoUpgradePolicyResponse() (response *DescribeDeviceAutoUpgradePolicyResponse) {
+	response = &DescribeDeviceAutoUpgradePolicyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/smartag/describe_dnat_entries.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeDnatEntries invokes the smartag.DescribeDnatEntries API synchronously
+// api document: https://help.aliyun.com/api/smartag/describednatentries.html
+func (client *Client) DescribeDnatEntries(request *DescribeDnatEntriesRequest) (response *DescribeDnatEntriesResponse, err error) {
+	response = CreateDescribeDnatEntriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeDnatEntriesWithChan invokes the smartag.DescribeDnatEntries API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describednatentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDnatEntriesWithChan(request *DescribeDnatEntriesRequest) (<-chan *DescribeDnatEntriesResponse, <-chan error) {
+	responseChan := make(chan *DescribeDnatEntriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeDnatEntries(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeDnatEntriesWithCallback invokes the smartag.DescribeDnatEntries API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describednatentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeDnatEntriesWithCallback(request *DescribeDnatEntriesRequest, callback func(response *DescribeDnatEntriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeDnatEntriesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeDnatEntries(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeDnatEntriesRequest is the request struct for api DescribeDnatEntries
+type DescribeDnatEntriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Type                 string           `position:"Query" name:"Type"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SagId                string           `position:"Query" name:"SagId"`
+}
+
+// DescribeDnatEntriesResponse is the response struct for api DescribeDnatEntries
+type DescribeDnatEntriesResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	TotalCount  int         `json:"TotalCount" xml:"TotalCount"`
+	PageNumber  int         `json:"PageNumber" xml:"PageNumber"`
+	PageSize    int         `json:"PageSize" xml:"PageSize"`
+	DnatEntries DnatEntries `json:"DnatEntries" xml:"DnatEntries"`
+}
+
+// CreateDescribeDnatEntriesRequest creates a request to invoke DescribeDnatEntries API
+func CreateDescribeDnatEntriesRequest() (request *DescribeDnatEntriesRequest) {
+	request = &DescribeDnatEntriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeDnatEntries", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeDnatEntriesResponse creates a response to parse from DescribeDnatEntries response
+func CreateDescribeDnatEntriesResponse() (response *DescribeDnatEntriesResponse) {
+	response = &DescribeDnatEntriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/smartag/describe_flow_log_sags.go

@@ -0,0 +1,113 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeFlowLogSags invokes the smartag.DescribeFlowLogSags API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeflowlogsags.html
+func (client *Client) DescribeFlowLogSags(request *DescribeFlowLogSagsRequest) (response *DescribeFlowLogSagsResponse, err error) {
+	response = CreateDescribeFlowLogSagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowLogSagsWithChan invokes the smartag.DescribeFlowLogSags API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeflowlogsags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowLogSagsWithChan(request *DescribeFlowLogSagsRequest) (<-chan *DescribeFlowLogSagsResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowLogSagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowLogSags(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowLogSagsWithCallback invokes the smartag.DescribeFlowLogSags API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeflowlogsags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowLogSagsWithCallback(request *DescribeFlowLogSagsRequest, callback func(response *DescribeFlowLogSagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowLogSagsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowLogSags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowLogSagsRequest is the request struct for api DescribeFlowLogSags
+type DescribeFlowLogSagsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+}
+
+// DescribeFlowLogSagsResponse is the response struct for api DescribeFlowLogSags
+type DescribeFlowLogSagsResponse struct {
+	*responses.BaseResponse
+	RequestId  string                    `json:"RequestId" xml:"RequestId"`
+	TotalCount int                       `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int                       `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                       `json:"PageSize" xml:"PageSize"`
+	Sags       SagsInDescribeFlowLogSags `json:"Sags" xml:"Sags"`
+}
+
+// CreateDescribeFlowLogSagsRequest creates a request to invoke DescribeFlowLogSags API
+func CreateDescribeFlowLogSagsRequest() (request *DescribeFlowLogSagsRequest) {
+	request = &DescribeFlowLogSagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeFlowLogSags", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeFlowLogSagsResponse creates a response to parse from DescribeFlowLogSags response
+func CreateDescribeFlowLogSagsResponse() (response *DescribeFlowLogSagsResponse) {
+	response = &DescribeFlowLogSagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/smartag/describe_flow_logs.go

@@ -0,0 +1,117 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeFlowLogs invokes the smartag.DescribeFlowLogs API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeflowlogs.html
+func (client *Client) DescribeFlowLogs(request *DescribeFlowLogsRequest) (response *DescribeFlowLogsResponse, err error) {
+	response = CreateDescribeFlowLogsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeFlowLogsWithChan invokes the smartag.DescribeFlowLogs API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeflowlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowLogsWithChan(request *DescribeFlowLogsRequest) (<-chan *DescribeFlowLogsResponse, <-chan error) {
+	responseChan := make(chan *DescribeFlowLogsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeFlowLogs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeFlowLogsWithCallback invokes the smartag.DescribeFlowLogs API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeflowlogs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeFlowLogsWithCallback(request *DescribeFlowLogsRequest, callback func(response *DescribeFlowLogsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeFlowLogsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeFlowLogs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeFlowLogsRequest is the request struct for api DescribeFlowLogs
+type DescribeFlowLogsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Description          string           `position:"Query" name:"Description"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	OutputType           string           `position:"Query" name:"OutputType"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+	FlowLogName          string           `position:"Query" name:"FlowLogName"`
+	Status               string           `position:"Query" name:"Status"`
+}
+
+// DescribeFlowLogsResponse is the response struct for api DescribeFlowLogs
+type DescribeFlowLogsResponse struct {
+	*responses.BaseResponse
+	RequestId  string   `json:"RequestId" xml:"RequestId"`
+	TotalCount int      `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int      `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int      `json:"PageSize" xml:"PageSize"`
+	FlowLogs   FlowLogs `json:"FlowLogs" xml:"FlowLogs"`
+}
+
+// CreateDescribeFlowLogsRequest creates a request to invoke DescribeFlowLogs API
+func CreateDescribeFlowLogsRequest() (request *DescribeFlowLogsRequest) {
+	request = &DescribeFlowLogsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeFlowLogs", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeFlowLogsResponse creates a response to parse from DescribeFlowLogs response
+func CreateDescribeFlowLogsResponse() (response *DescribeFlowLogsResponse) {
+	response = &DescribeFlowLogsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 7 - 7
services/smartag/describe_grant_rules.go

@@ -77,22 +77,22 @@ func (client *Client) DescribeGrantRulesWithCallback(request *DescribeGrantRules
 type DescribeGrantRulesRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	PageSize             string           `position:"Query" name:"PageSize"`
 	AssociatedCcnId      string           `position:"Query" name:"AssociatedCcnId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	PageNumber           string           `position:"Query" name:"PageNumber"`
 }
 
 // DescribeGrantRulesResponse is the response struct for api DescribeGrantRules
 type DescribeGrantRulesResponse struct {
 	*responses.BaseResponse
-	RequestId  string     `json:"RequestId" xml:"RequestId"`
-	TotalCount int        `json:"TotalCount" xml:"TotalCount"`
-	PageNumber int        `json:"PageNumber" xml:"PageNumber"`
-	PageSize   int        `json:"PageSize" xml:"PageSize"`
-	GrantRules GrantRules `json:"GrantRules" xml:"GrantRules"`
+	RequestId  string                         `json:"RequestId" xml:"RequestId"`
+	TotalCount int                            `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int                            `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                            `json:"PageSize" xml:"PageSize"`
+	GrantRules GrantRulesInDescribeGrantRules `json:"GrantRules" xml:"GrantRules"`
 }
 
 // CreateDescribeGrantRulesRequest creates a request to invoke DescribeGrantRules API

+ 113 - 0
services/smartag/describe_grant_sag_rules.go

@@ -0,0 +1,113 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeGrantSagRules invokes the smartag.DescribeGrantSagRules API synchronously
+// api document: https://help.aliyun.com/api/smartag/describegrantsagrules.html
+func (client *Client) DescribeGrantSagRules(request *DescribeGrantSagRulesRequest) (response *DescribeGrantSagRulesResponse, err error) {
+	response = CreateDescribeGrantSagRulesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeGrantSagRulesWithChan invokes the smartag.DescribeGrantSagRules API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describegrantsagrules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeGrantSagRulesWithChan(request *DescribeGrantSagRulesRequest) (<-chan *DescribeGrantSagRulesResponse, <-chan error) {
+	responseChan := make(chan *DescribeGrantSagRulesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeGrantSagRules(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeGrantSagRulesWithCallback invokes the smartag.DescribeGrantSagRules API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describegrantsagrules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeGrantSagRulesWithCallback(request *DescribeGrantSagRulesRequest, callback func(response *DescribeGrantSagRulesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeGrantSagRulesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeGrantSagRules(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeGrantSagRulesRequest is the request struct for api DescribeGrantSagRules
+type DescribeGrantSagRulesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeGrantSagRulesResponse is the response struct for api DescribeGrantSagRules
+type DescribeGrantSagRulesResponse struct {
+	*responses.BaseResponse
+	RequestId  string                            `json:"RequestId" xml:"RequestId"`
+	TotalCount int                               `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int                               `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int                               `json:"PageSize" xml:"PageSize"`
+	GrantRules GrantRulesInDescribeGrantSagRules `json:"GrantRules" xml:"GrantRules"`
+}
+
+// CreateDescribeGrantSagRulesRequest creates a request to invoke DescribeGrantSagRules API
+func CreateDescribeGrantSagRulesRequest() (request *DescribeGrantSagRulesRequest) {
+	request = &DescribeGrantSagRulesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeGrantSagRules", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeGrantSagRulesResponse creates a response to parse from DescribeGrantSagRules response
+func CreateDescribeGrantSagRulesResponse() (response *DescribeGrantSagRulesResponse) {
+	response = &DescribeGrantSagRulesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 124 - 0
services/smartag/describe_health_check_attribute.go

@@ -0,0 +1,124 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeHealthCheckAttribute invokes the smartag.DescribeHealthCheckAttribute API synchronously
+// api document: https://help.aliyun.com/api/smartag/describehealthcheckattribute.html
+func (client *Client) DescribeHealthCheckAttribute(request *DescribeHealthCheckAttributeRequest) (response *DescribeHealthCheckAttributeResponse, err error) {
+	response = CreateDescribeHealthCheckAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeHealthCheckAttributeWithChan invokes the smartag.DescribeHealthCheckAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describehealthcheckattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHealthCheckAttributeWithChan(request *DescribeHealthCheckAttributeRequest) (<-chan *DescribeHealthCheckAttributeResponse, <-chan error) {
+	responseChan := make(chan *DescribeHealthCheckAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeHealthCheckAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeHealthCheckAttributeWithCallback invokes the smartag.DescribeHealthCheckAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describehealthcheckattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHealthCheckAttributeWithCallback(request *DescribeHealthCheckAttributeRequest, callback func(response *DescribeHealthCheckAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeHealthCheckAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeHealthCheckAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeHealthCheckAttributeRequest is the request struct for api DescribeHealthCheckAttribute
+type DescribeHealthCheckAttributeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HcInstanceId         string           `position:"Query" name:"HcInstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeHealthCheckAttributeResponse is the response struct for api DescribeHealthCheckAttribute
+type DescribeHealthCheckAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId          string `json:"RequestId" xml:"RequestId"`
+	CreateTime         int64  `json:"CreateTime" xml:"CreateTime"`
+	HcInstanceId       string `json:"HcInstanceId" xml:"HcInstanceId"`
+	SmartAGId          string `json:"SmartAGId" xml:"SmartAGId"`
+	Name               string `json:"Name" xml:"Name"`
+	Description        string `json:"Description" xml:"Description"`
+	Type               string `json:"Type" xml:"Type"`
+	DstIpAddr          string `json:"DstIpAddr" xml:"DstIpAddr"`
+	DstPort            int    `json:"DstPort" xml:"DstPort"`
+	SrcIpAddr          string `json:"SrcIpAddr" xml:"SrcIpAddr"`
+	SrcPort            int    `json:"SrcPort" xml:"SrcPort"`
+	ProbeInterval      int    `json:"ProbeInterval" xml:"ProbeInterval"`
+	ProbeCount         int    `json:"ProbeCount" xml:"ProbeCount"`
+	ProbeTimeout       int    `json:"ProbeTimeout" xml:"ProbeTimeout"`
+	RttThreshold       int    `json:"RttThreshold" xml:"RttThreshold"`
+	RttFailThreshold   int    `json:"RttFailThreshold" xml:"RttFailThreshold"`
+	FailCountThreshold int    `json:"FailCountThreshold" xml:"FailCountThreshold"`
+}
+
+// CreateDescribeHealthCheckAttributeRequest creates a request to invoke DescribeHealthCheckAttribute API
+func CreateDescribeHealthCheckAttributeRequest() (request *DescribeHealthCheckAttributeRequest) {
+	request = &DescribeHealthCheckAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeHealthCheckAttribute", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeHealthCheckAttributeResponse creates a response to parse from DescribeHealthCheckAttribute response
+func CreateDescribeHealthCheckAttributeResponse() (response *DescribeHealthCheckAttributeResponse) {
+	response = &DescribeHealthCheckAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/smartag/describe_health_checks.go

@@ -0,0 +1,115 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeHealthChecks invokes the smartag.DescribeHealthChecks API synchronously
+// api document: https://help.aliyun.com/api/smartag/describehealthchecks.html
+func (client *Client) DescribeHealthChecks(request *DescribeHealthChecksRequest) (response *DescribeHealthChecksResponse, err error) {
+	response = CreateDescribeHealthChecksResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeHealthChecksWithChan invokes the smartag.DescribeHealthChecks API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describehealthchecks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHealthChecksWithChan(request *DescribeHealthChecksRequest) (<-chan *DescribeHealthChecksResponse, <-chan error) {
+	responseChan := make(chan *DescribeHealthChecksResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeHealthChecks(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeHealthChecksWithCallback invokes the smartag.DescribeHealthChecks API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describehealthchecks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeHealthChecksWithCallback(request *DescribeHealthChecksRequest, callback func(response *DescribeHealthChecksResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeHealthChecksResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeHealthChecks(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeHealthChecksRequest is the request struct for api DescribeHealthChecks
+type DescribeHealthChecksRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	HcInstanceId         string           `position:"Query" name:"HcInstanceId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeHealthChecksResponse is the response struct for api DescribeHealthChecks
+type DescribeHealthChecksResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	TotalCount   int          `json:"TotalCount" xml:"TotalCount"`
+	PageNumber   int          `json:"PageNumber" xml:"PageNumber"`
+	PageSize     int          `json:"PageSize" xml:"PageSize"`
+	HealthChecks HealthChecks `json:"HealthChecks" xml:"HealthChecks"`
+}
+
+// CreateDescribeHealthChecksRequest creates a request to invoke DescribeHealthChecks API
+func CreateDescribeHealthChecksRequest() (request *DescribeHealthChecksRequest) {
+	request = &DescribeHealthChecksRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeHealthChecks", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeHealthChecksResponse creates a response to parse from DescribeHealthChecks response
+func CreateDescribeHealthChecksResponse() (response *DescribeHealthChecksResponse) {
+	response = &DescribeHealthChecksResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 4 - 4
services/smartag/describe_network_optimization_sags.go

@@ -77,11 +77,11 @@ func (client *Client) DescribeNetworkOptimizationSagsWithCallback(request *Descr
 type DescribeNetworkOptimizationSagsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
-	PageNo               requests.Integer `position:"Query" name:"PageNo"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 
@@ -90,7 +90,7 @@ type DescribeNetworkOptimizationSagsResponse struct {
 	*responses.BaseResponse
 	RequestId           string                                               `json:"RequestId" xml:"RequestId"`
 	TotalCount          int                                                  `json:"TotalCount" xml:"TotalCount"`
-	PageNo              int                                                  `json:"PageNo" xml:"PageNo"`
+	PageNumber          int                                                  `json:"PageNumber" xml:"PageNumber"`
 	PageSize            int                                                  `json:"PageSize" xml:"PageSize"`
 	SmartAccessGateways SmartAccessGatewaysInDescribeNetworkOptimizationSags `json:"SmartAccessGateways" xml:"SmartAccessGateways"`
 }

+ 4 - 4
services/smartag/describe_network_optimization_settings.go

@@ -77,11 +77,11 @@ func (client *Client) DescribeNetworkOptimizationSettingsWithCallback(request *D
 type DescribeNetworkOptimizationSettingsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
-	PageNo               requests.Integer `position:"Query" name:"PageNo"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 
@@ -90,7 +90,7 @@ type DescribeNetworkOptimizationSettingsResponse struct {
 	*responses.BaseResponse
 	RequestId  string   `json:"RequestId" xml:"RequestId"`
 	TotalCount int      `json:"TotalCount" xml:"TotalCount"`
-	PageNo     int      `json:"PageNo" xml:"PageNo"`
+	PageNumber int      `json:"PageNumber" xml:"PageNumber"`
 	PageSize   int      `json:"PageSize" xml:"PageSize"`
 	Settings   Settings `json:"Settings" xml:"Settings"`
 }

+ 6 - 6
services/smartag/describe_network_optimizations.go

@@ -77,14 +77,14 @@ func (client *Client) DescribeNetworkOptimizationsWithCallback(request *Describe
 type DescribeNetworkOptimizationsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
-	PageNo               requests.Integer `position:"Query" name:"PageNo"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	CcnId                string           `position:"Query" name:"CcnId"`
-	Name                 string           `position:"Query" name:"Name"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
 	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
 }
 
 // DescribeNetworkOptimizationsResponse is the response struct for api DescribeNetworkOptimizations
@@ -92,7 +92,7 @@ type DescribeNetworkOptimizationsResponse struct {
 	*responses.BaseResponse
 	RequestId            string               `json:"RequestId" xml:"RequestId"`
 	TotalCount           int                  `json:"TotalCount" xml:"TotalCount"`
-	PageNo               int                  `json:"PageNo" xml:"PageNo"`
+	PageNumber           int                  `json:"PageNumber" xml:"PageNumber"`
 	PageSize             int                  `json:"PageSize" xml:"PageSize"`
 	NetworkOptimizations NetworkOptimizations `json:"NetworkOptimizations" xml:"NetworkOptimizations"`
 }

+ 109 - 0
services/smartag/describe_pbr_interfaces.go

@@ -0,0 +1,109 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribePbrInterfaces invokes the smartag.DescribePbrInterfaces API synchronously
+// api document: https://help.aliyun.com/api/smartag/describepbrinterfaces.html
+func (client *Client) DescribePbrInterfaces(request *DescribePbrInterfacesRequest) (response *DescribePbrInterfacesResponse, err error) {
+	response = CreateDescribePbrInterfacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePbrInterfacesWithChan invokes the smartag.DescribePbrInterfaces API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describepbrinterfaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePbrInterfacesWithChan(request *DescribePbrInterfacesRequest) (<-chan *DescribePbrInterfacesResponse, <-chan error) {
+	responseChan := make(chan *DescribePbrInterfacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePbrInterfaces(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePbrInterfacesWithCallback invokes the smartag.DescribePbrInterfaces API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describepbrinterfaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePbrInterfacesWithCallback(request *DescribePbrInterfacesRequest, callback func(response *DescribePbrInterfacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePbrInterfacesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePbrInterfaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePbrInterfacesRequest is the request struct for api DescribePbrInterfaces
+type DescribePbrInterfacesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PbrInstanceId        string           `position:"Query" name:"PbrInstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePbrInterfacesResponse is the response struct for api DescribePbrInterfaces
+type DescribePbrInterfacesResponse struct {
+	*responses.BaseResponse
+	RequestId     string        `json:"RequestId" xml:"RequestId"`
+	TotalCount    int           `json:"TotalCount" xml:"TotalCount"`
+	PbrInterfaces PbrInterfaces `json:"PbrInterfaces" xml:"PbrInterfaces"`
+}
+
+// CreateDescribePbrInterfacesRequest creates a request to invoke DescribePbrInterfaces API
+func CreateDescribePbrInterfacesRequest() (request *DescribePbrInterfacesRequest) {
+	request = &DescribePbrInterfacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribePbrInterfaces", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribePbrInterfacesResponse creates a response to parse from DescribePbrInterfaces response
+func CreateDescribePbrInterfacesResponse() (response *DescribePbrInterfacesResponse) {
+	response = &DescribePbrInterfacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/smartag/describe_pbr_rules.go

@@ -0,0 +1,113 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribePbrRules invokes the smartag.DescribePbrRules API synchronously
+// api document: https://help.aliyun.com/api/smartag/describepbrrules.html
+func (client *Client) DescribePbrRules(request *DescribePbrRulesRequest) (response *DescribePbrRulesResponse, err error) {
+	response = CreateDescribePbrRulesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePbrRulesWithChan invokes the smartag.DescribePbrRules API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describepbrrules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePbrRulesWithChan(request *DescribePbrRulesRequest) (<-chan *DescribePbrRulesResponse, <-chan error) {
+	responseChan := make(chan *DescribePbrRulesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePbrRules(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePbrRulesWithCallback invokes the smartag.DescribePbrRules API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describepbrrules.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePbrRulesWithCallback(request *DescribePbrRulesRequest, callback func(response *DescribePbrRulesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePbrRulesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePbrRules(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePbrRulesRequest is the request struct for api DescribePbrRules
+type DescribePbrRulesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           string           `position:"Query" name:"PageNumber"`
+	PageSize             string           `position:"Query" name:"PageSize"`
+	PbrInstanceId        string           `position:"Query" name:"PbrInstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePbrRulesResponse is the response struct for api DescribePbrRules
+type DescribePbrRulesResponse struct {
+	*responses.BaseResponse
+	RequestId  string   `json:"RequestId" xml:"RequestId"`
+	TotalCount int      `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int      `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int      `json:"PageSize" xml:"PageSize"`
+	PbrRules   PbrRules `json:"PbrRules" xml:"PbrRules"`
+}
+
+// CreateDescribePbrRulesRequest creates a request to invoke DescribePbrRules API
+func CreateDescribePbrRulesRequest() (request *DescribePbrRulesRequest) {
+	request = &DescribePbrRulesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribePbrRules", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribePbrRulesResponse creates a response to parse from DescribePbrRules response
+func CreateDescribePbrRulesResponse() (response *DescribePbrRulesResponse) {
+	response = &DescribePbrRulesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/smartag/describe_policy_based_routings.go

@@ -0,0 +1,115 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribePolicyBasedRoutings invokes the smartag.DescribePolicyBasedRoutings API synchronously
+// api document: https://help.aliyun.com/api/smartag/describepolicybasedroutings.html
+func (client *Client) DescribePolicyBasedRoutings(request *DescribePolicyBasedRoutingsRequest) (response *DescribePolicyBasedRoutingsResponse, err error) {
+	response = CreateDescribePolicyBasedRoutingsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePolicyBasedRoutingsWithChan invokes the smartag.DescribePolicyBasedRoutings API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describepolicybasedroutings.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePolicyBasedRoutingsWithChan(request *DescribePolicyBasedRoutingsRequest) (<-chan *DescribePolicyBasedRoutingsResponse, <-chan error) {
+	responseChan := make(chan *DescribePolicyBasedRoutingsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePolicyBasedRoutings(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePolicyBasedRoutingsWithCallback invokes the smartag.DescribePolicyBasedRoutings API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describepolicybasedroutings.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePolicyBasedRoutingsWithCallback(request *DescribePolicyBasedRoutingsRequest, callback func(response *DescribePolicyBasedRoutingsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePolicyBasedRoutingsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePolicyBasedRoutings(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePolicyBasedRoutingsRequest is the request struct for api DescribePolicyBasedRoutings
+type DescribePolicyBasedRoutingsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	PbrInstanceId        string           `position:"Query" name:"PbrInstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribePolicyBasedRoutingsResponse is the response struct for api DescribePolicyBasedRoutings
+type DescribePolicyBasedRoutingsResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	TotalCount          int                 `json:"TotalCount" xml:"TotalCount"`
+	PageNumber          int                 `json:"PageNumber" xml:"PageNumber"`
+	PageSize            int                 `json:"PageSize" xml:"PageSize"`
+	PolicyBasedRoutings PolicyBasedRoutings `json:"PolicyBasedRoutings" xml:"PolicyBasedRoutings"`
+}
+
+// CreateDescribePolicyBasedRoutingsRequest creates a request to invoke DescribePolicyBasedRoutings API
+func CreateDescribePolicyBasedRoutingsRequest() (request *DescribePolicyBasedRoutingsRequest) {
+	request = &DescribePolicyBasedRoutingsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribePolicyBasedRoutings", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribePolicyBasedRoutingsResponse creates a response to parse from DescribePolicyBasedRoutings response
+func CreateDescribePolicyBasedRoutingsResponse() (response *DescribePolicyBasedRoutingsResponse) {
+	response = &DescribePolicyBasedRoutingsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/smartag/describe_qos_cars.go

@@ -0,0 +1,116 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeQosCars invokes the smartag.DescribeQosCars API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeqoscars.html
+func (client *Client) DescribeQosCars(request *DescribeQosCarsRequest) (response *DescribeQosCarsResponse, err error) {
+	response = CreateDescribeQosCarsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeQosCarsWithChan invokes the smartag.DescribeQosCars API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeqoscars.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeQosCarsWithChan(request *DescribeQosCarsRequest) (<-chan *DescribeQosCarsResponse, <-chan error) {
+	responseChan := make(chan *DescribeQosCarsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeQosCars(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeQosCarsWithCallback invokes the smartag.DescribeQosCars API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeqoscars.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeQosCarsWithCallback(request *DescribeQosCarsRequest, callback func(response *DescribeQosCarsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeQosCarsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeQosCars(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeQosCarsRequest is the request struct for api DescribeQosCars
+type DescribeQosCarsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	Description          string           `position:"Query" name:"Description"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	QosId                string           `position:"Query" name:"QosId"`
+	Order                string           `position:"Query" name:"Order"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	QosCarId             string           `position:"Query" name:"QosCarId"`
+}
+
+// DescribeQosCarsResponse is the response struct for api DescribeQosCars
+type DescribeQosCarsResponse struct {
+	*responses.BaseResponse
+	RequestId  string  `json:"RequestId" xml:"RequestId"`
+	TotalCount int     `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int     `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int     `json:"PageSize" xml:"PageSize"`
+	QosCars    QosCars `json:"QosCars" xml:"QosCars"`
+}
+
+// CreateDescribeQosCarsRequest creates a request to invoke DescribeQosCars API
+func CreateDescribeQosCarsRequest() (request *DescribeQosCarsRequest) {
+	request = &DescribeQosCarsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeQosCars", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeQosCarsResponse creates a response to parse from DescribeQosCars response
+func CreateDescribeQosCarsResponse() (response *DescribeQosCarsResponse) {
+	response = &DescribeQosCarsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/smartag/describe_qos_policies.go

@@ -0,0 +1,116 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeQosPolicies invokes the smartag.DescribeQosPolicies API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeqospolicies.html
+func (client *Client) DescribeQosPolicies(request *DescribeQosPoliciesRequest) (response *DescribeQosPoliciesResponse, err error) {
+	response = CreateDescribeQosPoliciesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeQosPoliciesWithChan invokes the smartag.DescribeQosPolicies API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeqospolicies.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeQosPoliciesWithChan(request *DescribeQosPoliciesRequest) (<-chan *DescribeQosPoliciesResponse, <-chan error) {
+	responseChan := make(chan *DescribeQosPoliciesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeQosPolicies(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeQosPoliciesWithCallback invokes the smartag.DescribeQosPolicies API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeqospolicies.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeQosPoliciesWithCallback(request *DescribeQosPoliciesRequest, callback func(response *DescribeQosPoliciesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeQosPoliciesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeQosPolicies(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeQosPoliciesRequest is the request struct for api DescribeQosPolicies
+type DescribeQosPoliciesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	QosPolicyId          string           `position:"Query" name:"QosPolicyId"`
+	Description          string           `position:"Query" name:"Description"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	QosId                string           `position:"Query" name:"QosId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Priority             requests.Integer `position:"Query" name:"Priority"`
+}
+
+// DescribeQosPoliciesResponse is the response struct for api DescribeQosPolicies
+type DescribeQosPoliciesResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	TotalCount  int         `json:"TotalCount" xml:"TotalCount"`
+	PageNumber  int         `json:"PageNumber" xml:"PageNumber"`
+	PageSize    int         `json:"PageSize" xml:"PageSize"`
+	QosPolicies QosPolicies `json:"QosPolicies" xml:"QosPolicies"`
+}
+
+// CreateDescribeQosPoliciesRequest creates a request to invoke DescribeQosPolicies API
+func CreateDescribeQosPoliciesRequest() (request *DescribeQosPoliciesRequest) {
+	request = &DescribeQosPoliciesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeQosPolicies", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeQosPoliciesResponse creates a response to parse from DescribeQosPolicies response
+func CreateDescribeQosPoliciesResponse() (response *DescribeQosPoliciesResponse) {
+	response = &DescribeQosPoliciesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/smartag/describe_qoses.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeQoses invokes the smartag.DescribeQoses API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeqoses.html
+func (client *Client) DescribeQoses(request *DescribeQosesRequest) (response *DescribeQosesResponse, err error) {
+	response = CreateDescribeQosesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeQosesWithChan invokes the smartag.DescribeQoses API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeqoses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeQosesWithChan(request *DescribeQosesRequest) (<-chan *DescribeQosesResponse, <-chan error) {
+	responseChan := make(chan *DescribeQosesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeQoses(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeQosesWithCallback invokes the smartag.DescribeQoses API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeqoses.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeQosesWithCallback(request *DescribeQosesRequest, callback func(response *DescribeQosesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeQosesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeQoses(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeQosesRequest is the request struct for api DescribeQoses
+type DescribeQosesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	QosIds               string           `position:"Query" name:"QosIds"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	QosName              string           `position:"Query" name:"QosName"`
+}
+
+// DescribeQosesResponse is the response struct for api DescribeQoses
+type DescribeQosesResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	TotalCount int    `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int    `json:"PageSize" xml:"PageSize"`
+	Qoses      Qoses  `json:"Qoses" xml:"Qoses"`
+}
+
+// CreateDescribeQosesRequest creates a request to invoke DescribeQoses API
+func CreateDescribeQosesRequest() (request *DescribeQosesRequest) {
+	request = &DescribeQosesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeQoses", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeQosesResponse creates a response to parse from DescribeQoses response
+func CreateDescribeQosesResponse() (response *DescribeQosesResponse) {
+	response = &DescribeQosesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/describe_regions.go

@@ -79,8 +79,8 @@ type DescribeRegionsRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	AcceptLanguage       string           `position:"Query" name:"AcceptLanguage"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	AcceptLanguage       string           `position:"Query" name:"AcceptLanguage"`
 }
 
 // DescribeRegionsResponse is the response struct for api DescribeRegions

+ 114 - 0
services/smartag/describe_route_distribution_strategies.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeRouteDistributionStrategies invokes the smartag.DescribeRouteDistributionStrategies API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeroutedistributionstrategies.html
+func (client *Client) DescribeRouteDistributionStrategies(request *DescribeRouteDistributionStrategiesRequest) (response *DescribeRouteDistributionStrategiesResponse, err error) {
+	response = CreateDescribeRouteDistributionStrategiesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeRouteDistributionStrategiesWithChan invokes the smartag.DescribeRouteDistributionStrategies API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeroutedistributionstrategies.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRouteDistributionStrategiesWithChan(request *DescribeRouteDistributionStrategiesRequest) (<-chan *DescribeRouteDistributionStrategiesResponse, <-chan error) {
+	responseChan := make(chan *DescribeRouteDistributionStrategiesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeRouteDistributionStrategies(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeRouteDistributionStrategiesWithCallback invokes the smartag.DescribeRouteDistributionStrategies API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeroutedistributionstrategies.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeRouteDistributionStrategiesWithCallback(request *DescribeRouteDistributionStrategiesRequest, callback func(response *DescribeRouteDistributionStrategiesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeRouteDistributionStrategiesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeRouteDistributionStrategies(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeRouteDistributionStrategiesRequest is the request struct for api DescribeRouteDistributionStrategies
+type DescribeRouteDistributionStrategiesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	SourceType           string           `position:"Query" name:"SourceType"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeRouteDistributionStrategiesResponse is the response struct for api DescribeRouteDistributionStrategies
+type DescribeRouteDistributionStrategiesResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	TotalCount int        `json:"TotalCount" xml:"TotalCount"`
+	PageNumber int        `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int        `json:"PageSize" xml:"PageSize"`
+	Strategies Strategies `json:"Strategies" xml:"Strategies"`
+}
+
+// CreateDescribeRouteDistributionStrategiesRequest creates a request to invoke DescribeRouteDistributionStrategies API
+func CreateDescribeRouteDistributionStrategiesRequest() (request *DescribeRouteDistributionStrategiesRequest) {
+	request = &DescribeRouteDistributionStrategiesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeRouteDistributionStrategies", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeRouteDistributionStrategiesResponse creates a response to parse from DescribeRouteDistributionStrategies response
+func CreateDescribeRouteDistributionStrategiesResponse() (response *DescribeRouteDistributionStrategiesResponse) {
+	response = &DescribeRouteDistributionStrategiesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/smartag/describe_sag_ec_route_backup_attribute.go

@@ -0,0 +1,114 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeSagECRouteBackupAttribute invokes the smartag.DescribeSagECRouteBackupAttribute API synchronously
+// api document: https://help.aliyun.com/api/smartag/describesagecroutebackupattribute.html
+func (client *Client) DescribeSagECRouteBackupAttribute(request *DescribeSagECRouteBackupAttributeRequest) (response *DescribeSagECRouteBackupAttributeResponse, err error) {
+	response = CreateDescribeSagECRouteBackupAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeSagECRouteBackupAttributeWithChan invokes the smartag.DescribeSagECRouteBackupAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesagecroutebackupattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSagECRouteBackupAttributeWithChan(request *DescribeSagECRouteBackupAttributeRequest) (<-chan *DescribeSagECRouteBackupAttributeResponse, <-chan error) {
+	responseChan := make(chan *DescribeSagECRouteBackupAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeSagECRouteBackupAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeSagECRouteBackupAttributeWithCallback invokes the smartag.DescribeSagECRouteBackupAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesagecroutebackupattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSagECRouteBackupAttributeWithCallback(request *DescribeSagECRouteBackupAttributeRequest, callback func(response *DescribeSagECRouteBackupAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeSagECRouteBackupAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeSagECRouteBackupAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeSagECRouteBackupAttributeRequest is the request struct for api DescribeSagECRouteBackupAttribute
+type DescribeSagECRouteBackupAttributeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeSagECRouteBackupAttributeResponse is the response struct for api DescribeSagECRouteBackupAttribute
+type DescribeSagECRouteBackupAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId                  string `json:"RequestId" xml:"RequestId"`
+	SagId                      string `json:"SagId" xml:"SagId"`
+	HcIp                       string `json:"HcIp" xml:"HcIp"`
+	ExpressConnectionInterface string `json:"ExpressConnectionInterface" xml:"ExpressConnectionInterface"`
+	ExpressConnectionNexthop   string `json:"ExpressConnectionNexthop" xml:"ExpressConnectionNexthop"`
+	RouteBackup                bool   `json:"RouteBackup" xml:"RouteBackup"`
+	Status                     string `json:"Status" xml:"Status"`
+	Cidrs                      Cidrs  `json:"Cidrs" xml:"Cidrs"`
+}
+
+// CreateDescribeSagECRouteBackupAttributeRequest creates a request to invoke DescribeSagECRouteBackupAttribute API
+func CreateDescribeSagECRouteBackupAttributeRequest() (request *DescribeSagECRouteBackupAttributeRequest) {
+	request = &DescribeSagECRouteBackupAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeSagECRouteBackupAttribute", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeSagECRouteBackupAttributeResponse creates a response to parse from DescribeSagECRouteBackupAttribute response
+func CreateDescribeSagECRouteBackupAttributeResponse() (response *DescribeSagECRouteBackupAttributeResponse) {
+	response = &DescribeSagECRouteBackupAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/describe_sag_online_client_statistics.go

@@ -77,9 +77,9 @@ func (client *Client) DescribeSagOnlineClientStatisticsWithCallback(request *Des
 type DescribeSagOnlineClientStatisticsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SmartAGIds           *[]string        `position:"Query" name:"SmartAGIds"  type:"Repeated"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGIds           *[]string        `position:"Query" name:"SmartAGIds"  type:"Repeated"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 

+ 113 - 0
services/smartag/describe_sag_remote_access.go

@@ -0,0 +1,113 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeSagRemoteAccess invokes the smartag.DescribeSagRemoteAccess API synchronously
+// api document: https://help.aliyun.com/api/smartag/describesagremoteaccess.html
+func (client *Client) DescribeSagRemoteAccess(request *DescribeSagRemoteAccessRequest) (response *DescribeSagRemoteAccessResponse, err error) {
+	response = CreateDescribeSagRemoteAccessResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeSagRemoteAccessWithChan invokes the smartag.DescribeSagRemoteAccess API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesagremoteaccess.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSagRemoteAccessWithChan(request *DescribeSagRemoteAccessRequest) (<-chan *DescribeSagRemoteAccessResponse, <-chan error) {
+	responseChan := make(chan *DescribeSagRemoteAccessResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeSagRemoteAccess(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeSagRemoteAccessWithCallback invokes the smartag.DescribeSagRemoteAccess API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesagremoteaccess.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSagRemoteAccessWithCallback(request *DescribeSagRemoteAccessRequest, callback func(response *DescribeSagRemoteAccessResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeSagRemoteAccessResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeSagRemoteAccess(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeSagRemoteAccessRequest is the request struct for api DescribeSagRemoteAccess
+type DescribeSagRemoteAccessRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	SerialNumber         string           `position:"Query" name:"SerialNumber"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeSagRemoteAccessResponse is the response struct for api DescribeSagRemoteAccess
+type DescribeSagRemoteAccessResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	Success        bool           `json:"Success" xml:"Success"`
+	Code           string         `json:"Code" xml:"Code"`
+	Message        string         `json:"Message" xml:"Message"`
+	SmartAGId      string         `json:"SmartAGId" xml:"SmartAGId"`
+	RemoteAccesses RemoteAccesses `json:"RemoteAccesses" xml:"RemoteAccesses"`
+}
+
+// CreateDescribeSagRemoteAccessRequest creates a request to invoke DescribeSagRemoteAccess API
+func CreateDescribeSagRemoteAccessRequest() (request *DescribeSagRemoteAccessRequest) {
+	request = &DescribeSagRemoteAccessRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeSagRemoteAccess", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeSagRemoteAccessResponse creates a response to parse from DescribeSagRemoteAccess response
+func CreateDescribeSagRemoteAccessResponse() (response *DescribeSagRemoteAccessResponse) {
+	response = &DescribeSagRemoteAccessResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/describe_sag_routeable_address.go

@@ -78,9 +78,9 @@ type DescribeSagRouteableAddressRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	SagId                string           `position:"Query" name:"SagId"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SagId                string           `position:"Query" name:"SagId"`
 }
 
 // DescribeSagRouteableAddressResponse is the response struct for api DescribeSagRouteableAddress

+ 127 - 0
services/smartag/describe_smart_access_gateway_attribute.go

@@ -0,0 +1,127 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeSmartAccessGatewayAttribute invokes the smartag.DescribeSmartAccessGatewayAttribute API synchronously
+// api document: https://help.aliyun.com/api/smartag/describesmartaccessgatewayattribute.html
+func (client *Client) DescribeSmartAccessGatewayAttribute(request *DescribeSmartAccessGatewayAttributeRequest) (response *DescribeSmartAccessGatewayAttributeResponse, err error) {
+	response = CreateDescribeSmartAccessGatewayAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeSmartAccessGatewayAttributeWithChan invokes the smartag.DescribeSmartAccessGatewayAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesmartaccessgatewayattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSmartAccessGatewayAttributeWithChan(request *DescribeSmartAccessGatewayAttributeRequest) (<-chan *DescribeSmartAccessGatewayAttributeResponse, <-chan error) {
+	responseChan := make(chan *DescribeSmartAccessGatewayAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeSmartAccessGatewayAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeSmartAccessGatewayAttributeWithCallback invokes the smartag.DescribeSmartAccessGatewayAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesmartaccessgatewayattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSmartAccessGatewayAttributeWithCallback(request *DescribeSmartAccessGatewayAttributeRequest, callback func(response *DescribeSmartAccessGatewayAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeSmartAccessGatewayAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeSmartAccessGatewayAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeSmartAccessGatewayAttributeRequest is the request struct for api DescribeSmartAccessGatewayAttribute
+type DescribeSmartAccessGatewayAttributeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeSmartAccessGatewayAttributeResponse is the response struct for api DescribeSmartAccessGatewayAttribute
+type DescribeSmartAccessGatewayAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId             string                                     `json:"RequestId" xml:"RequestId"`
+	SmartAGId             string                                     `json:"SmartAGId" xml:"SmartAGId"`
+	Name                  string                                     `json:"Name" xml:"Name"`
+	City                  string                                     `json:"City" xml:"City"`
+	MaxBandwidth          string                                     `json:"MaxBandwidth" xml:"MaxBandwidth"`
+	Status                string                                     `json:"Status" xml:"Status"`
+	CidrBlock             string                                     `json:"CidrBlock" xml:"CidrBlock"`
+	AssociatedCcnId       string                                     `json:"AssociatedCcnId" xml:"AssociatedCcnId"`
+	AssociatedCcnName     string                                     `json:"AssociatedCcnName" xml:"AssociatedCcnName"`
+	Description           string                                     `json:"Description" xml:"Description"`
+	CreateTime            int64                                      `json:"CreateTime" xml:"CreateTime"`
+	EndTime               int64                                      `json:"EndTime" xml:"EndTime"`
+	InstanceType          string                                     `json:"InstanceType" xml:"InstanceType"`
+	SerialNumber          string                                     `json:"SerialNumber" xml:"SerialNumber"`
+	SecurityLockThreshold int                                        `json:"SecurityLockThreshold" xml:"SecurityLockThreshold"`
+	AclIds                string                                     `json:"AclIds" xml:"AclIds"`
+	DataPlan              int64                                      `json:"DataPlan" xml:"DataPlan"`
+	UserCount             int                                        `json:"UserCount" xml:"UserCount"`
+	RoutingStrategy       string                                     `json:"RoutingStrategy" xml:"RoutingStrategy"`
+	Links                 LinksInDescribeSmartAccessGatewayAttribute `json:"Links" xml:"Links"`
+	Devices               Devices                                    `json:"Devices" xml:"Devices"`
+}
+
+// CreateDescribeSmartAccessGatewayAttributeRequest creates a request to invoke DescribeSmartAccessGatewayAttribute API
+func CreateDescribeSmartAccessGatewayAttributeRequest() (request *DescribeSmartAccessGatewayAttributeRequest) {
+	request = &DescribeSmartAccessGatewayAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeSmartAccessGatewayAttribute", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeSmartAccessGatewayAttributeResponse creates a response to parse from DescribeSmartAccessGatewayAttribute response
+func CreateDescribeSmartAccessGatewayAttributeResponse() (response *DescribeSmartAccessGatewayAttributeResponse) {
+	response = &DescribeSmartAccessGatewayAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 4 - 4
services/smartag/describe_smart_access_gateway_client_users.go

@@ -77,12 +77,12 @@ func (client *Client) DescribeSmartAccessGatewayClientUsersWithCallback(request
 type DescribeSmartAccessGatewayClientUsersRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	PageNo               requests.Integer `position:"Query" name:"PageNo"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	PageSize             requests.Integer `position:"Query" name:"PageSize"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	UserName             string           `position:"Query" name:"UserName"`
 }
 
@@ -91,7 +91,7 @@ type DescribeSmartAccessGatewayClientUsersResponse struct {
 	*responses.BaseResponse
 	RequestId  string                                       `json:"RequestId" xml:"RequestId"`
 	TotalCount int                                          `json:"TotalCount" xml:"TotalCount"`
-	PageNo     int                                          `json:"PageNo" xml:"PageNo"`
+	PageNumber int                                          `json:"PageNumber" xml:"PageNumber"`
 	PageSize   int                                          `json:"PageSize" xml:"PageSize"`
 	Users      UsersInDescribeSmartAccessGatewayClientUsers `json:"Users" xml:"Users"`
 }

+ 1 - 1
services/smartag/describe_smart_access_gateway_ha.go

@@ -79,8 +79,8 @@ type DescribeSmartAccessGatewayHaRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // DescribeSmartAccessGatewayHaResponse is the response struct for api DescribeSmartAccessGatewayHa

+ 1 - 1
services/smartag/describe_smart_access_gateway_versions.go

@@ -79,8 +79,8 @@ type DescribeSmartAccessGatewayVersionsRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // DescribeSmartAccessGatewayVersionsResponse is the response struct for api DescribeSmartAccessGatewayVersions

+ 6 - 5
services/smartag/describe_smart_access_gateways.go

@@ -77,18 +77,19 @@ func (client *Client) DescribeSmartAccessGatewaysWithCallback(request *DescribeS
 type DescribeSmartAccessGatewaysRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AclIds               string           `position:"Query" name:"AclIds"`
+	CanAssociateQos      requests.Boolean `position:"Query" name:"CanAssociateQos"`
+	UnboundAclIds        string           `position:"Query" name:"UnboundAclIds"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	InstanceType         string           `position:"Query" name:"InstanceType"`
 	SerialNumber         string           `position:"Query" name:"SerialNumber"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	AclIds               string           `position:"Query" name:"AclIds"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	AssociatedCcnId      string           `position:"Query" name:"AssociatedCcnId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
-	UnboundAclIds        string           `position:"Query" name:"UnboundAclIds"`
-	PageNumber           string           `position:"Query" name:"PageNumber"`
 	Name                 string           `position:"Query" name:"Name"`
-	PageSize             string           `position:"Query" name:"PageSize"`
 	SmartAGId            string           `position:"Query" name:"SmartAGId"`
-	InstanceType         string           `position:"Query" name:"InstanceType"`
 	Status               string           `position:"Query" name:"Status"`
 }
 

+ 113 - 0
services/smartag/describe_snat_entries.go

@@ -0,0 +1,113 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeSnatEntries invokes the smartag.DescribeSnatEntries API synchronously
+// api document: https://help.aliyun.com/api/smartag/describesnatentries.html
+func (client *Client) DescribeSnatEntries(request *DescribeSnatEntriesRequest) (response *DescribeSnatEntriesResponse, err error) {
+	response = CreateDescribeSnatEntriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeSnatEntriesWithChan invokes the smartag.DescribeSnatEntries API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesnatentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSnatEntriesWithChan(request *DescribeSnatEntriesRequest) (<-chan *DescribeSnatEntriesResponse, <-chan error) {
+	responseChan := make(chan *DescribeSnatEntriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeSnatEntries(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeSnatEntriesWithCallback invokes the smartag.DescribeSnatEntries API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describesnatentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeSnatEntriesWithCallback(request *DescribeSnatEntriesRequest, callback func(response *DescribeSnatEntriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeSnatEntriesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeSnatEntries(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeSnatEntriesRequest is the request struct for api DescribeSnatEntries
+type DescribeSnatEntriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DescribeSnatEntriesResponse is the response struct for api DescribeSnatEntries
+type DescribeSnatEntriesResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	TotalCount  int         `json:"TotalCount" xml:"TotalCount"`
+	PageNumber  int         `json:"PageNumber" xml:"PageNumber"`
+	PageSize    int         `json:"PageSize" xml:"PageSize"`
+	SnatEntries SnatEntries `json:"SnatEntries" xml:"SnatEntries"`
+}
+
+// CreateDescribeSnatEntriesRequest creates a request to invoke DescribeSnatEntries API
+func CreateDescribeSnatEntriesRequest() (request *DescribeSnatEntriesRequest) {
+	request = &DescribeSnatEntriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeSnatEntries", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeSnatEntriesResponse creates a response to parse from DescribeSnatEntries response
+func CreateDescribeSnatEntriesResponse() (response *DescribeSnatEntriesResponse) {
+	response = &DescribeSnatEntriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/smartag/describe_unbind_flow_log_sags.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeUnbindFlowLogSags invokes the smartag.DescribeUnbindFlowLogSags API synchronously
+// api document: https://help.aliyun.com/api/smartag/describeunbindflowlogsags.html
+func (client *Client) DescribeUnbindFlowLogSags(request *DescribeUnbindFlowLogSagsRequest) (response *DescribeUnbindFlowLogSagsResponse, err error) {
+	response = CreateDescribeUnbindFlowLogSagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeUnbindFlowLogSagsWithChan invokes the smartag.DescribeUnbindFlowLogSags API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeunbindflowlogsags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUnbindFlowLogSagsWithChan(request *DescribeUnbindFlowLogSagsRequest) (<-chan *DescribeUnbindFlowLogSagsResponse, <-chan error) {
+	responseChan := make(chan *DescribeUnbindFlowLogSagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeUnbindFlowLogSags(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeUnbindFlowLogSagsWithCallback invokes the smartag.DescribeUnbindFlowLogSags API asynchronously
+// api document: https://help.aliyun.com/api/smartag/describeunbindflowlogsags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeUnbindFlowLogSagsWithCallback(request *DescribeUnbindFlowLogSagsRequest, callback func(response *DescribeUnbindFlowLogSagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeUnbindFlowLogSagsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeUnbindFlowLogSags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeUnbindFlowLogSagsRequest is the request struct for api DescribeUnbindFlowLogSags
+type DescribeUnbindFlowLogSagsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeUnbindFlowLogSagsResponse is the response struct for api DescribeUnbindFlowLogSags
+type DescribeUnbindFlowLogSagsResponse struct {
+	*responses.BaseResponse
+	RequestId string                          `json:"RequestId" xml:"RequestId"`
+	Count     int                             `json:"Count" xml:"Count"`
+	Sags      SagsInDescribeUnbindFlowLogSags `json:"Sags" xml:"Sags"`
+}
+
+// CreateDescribeUnbindFlowLogSagsRequest creates a request to invoke DescribeUnbindFlowLogSags API
+func CreateDescribeUnbindFlowLogSagsRequest() (request *DescribeUnbindFlowLogSagsRequest) {
+	request = &DescribeUnbindFlowLogSagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DescribeUnbindFlowLogSags", "smartag", "openAPI")
+	return
+}
+
+// CreateDescribeUnbindFlowLogSagsResponse creates a response to parse from DescribeUnbindFlowLogSags response
+func CreateDescribeUnbindFlowLogSagsResponse() (response *DescribeUnbindFlowLogSagsResponse) {
+	response = &DescribeUnbindFlowLogSagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/smartag/describe_user_flow_statistics.go

@@ -77,12 +77,12 @@ func (client *Client) DescribeUserFlowStatisticsWithCallback(request *DescribeUs
 type DescribeUserFlowStatisticsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	UserNames            *[]string        `position:"Query" name:"UserNames"  type:"Repeated"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	StatisticsDate       string           `position:"Query" name:"StatisticsDate"`
-	UserNames            *[]string        `position:"Query" name:"UserNames"  type:"Repeated"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // DescribeUserFlowStatisticsResponse is the response struct for api DescribeUserFlowStatistics

+ 2 - 2
services/smartag/describe_user_online_client_statistics.go

@@ -77,11 +77,11 @@ func (client *Client) DescribeUserOnlineClientStatisticsWithCallback(request *De
 type DescribeUserOnlineClientStatisticsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	UserNames            *[]string        `position:"Query" name:"UserNames"  type:"Repeated"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
-	UserNames            *[]string        `position:"Query" name:"UserNames"  type:"Repeated"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // DescribeUserOnlineClientStatisticsResponse is the response struct for api DescribeUserOnlineClientStatistics

+ 1 - 1
services/smartag/describe_user_online_clients.go

@@ -79,8 +79,8 @@ type DescribeUserOnlineClientsRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	UserName             string           `position:"Query" name:"UserName"`
 }
 

+ 2 - 2
services/smartag/detach_network_optimization_sags.go

@@ -77,10 +77,10 @@ func (client *Client) DetachNetworkOptimizationSagsWithCallback(request *DetachN
 type DetachNetworkOptimizationSagsRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	NetworkOptId         string           `position:"Query" name:"NetworkOptId"`
-	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	SmartAGIds           *[]string        `position:"Query" name:"SmartAGIds"  type:"Repeated"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 }
 

+ 108 - 0
services/smartag/disable_smart_access_gateway_user.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DisableSmartAccessGatewayUser invokes the smartag.DisableSmartAccessGatewayUser API synchronously
+// api document: https://help.aliyun.com/api/smartag/disablesmartaccessgatewayuser.html
+func (client *Client) DisableSmartAccessGatewayUser(request *DisableSmartAccessGatewayUserRequest) (response *DisableSmartAccessGatewayUserResponse, err error) {
+	response = CreateDisableSmartAccessGatewayUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DisableSmartAccessGatewayUserWithChan invokes the smartag.DisableSmartAccessGatewayUser API asynchronously
+// api document: https://help.aliyun.com/api/smartag/disablesmartaccessgatewayuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DisableSmartAccessGatewayUserWithChan(request *DisableSmartAccessGatewayUserRequest) (<-chan *DisableSmartAccessGatewayUserResponse, <-chan error) {
+	responseChan := make(chan *DisableSmartAccessGatewayUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DisableSmartAccessGatewayUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DisableSmartAccessGatewayUserWithCallback invokes the smartag.DisableSmartAccessGatewayUser API asynchronously
+// api document: https://help.aliyun.com/api/smartag/disablesmartaccessgatewayuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DisableSmartAccessGatewayUserWithCallback(request *DisableSmartAccessGatewayUserRequest, callback func(response *DisableSmartAccessGatewayUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DisableSmartAccessGatewayUserResponse
+		var err error
+		defer close(result)
+		response, err = client.DisableSmartAccessGatewayUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DisableSmartAccessGatewayUserRequest is the request struct for api DisableSmartAccessGatewayUser
+type DisableSmartAccessGatewayUserRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	UserName             string           `position:"Query" name:"UserName"`
+}
+
+// DisableSmartAccessGatewayUserResponse is the response struct for api DisableSmartAccessGatewayUser
+type DisableSmartAccessGatewayUserResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDisableSmartAccessGatewayUserRequest creates a request to invoke DisableSmartAccessGatewayUser API
+func CreateDisableSmartAccessGatewayUserRequest() (request *DisableSmartAccessGatewayUserRequest) {
+	request = &DisableSmartAccessGatewayUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DisableSmartAccessGatewayUser", "smartag", "openAPI")
+	return
+}
+
+// CreateDisableSmartAccessGatewayUserResponse creates a response to parse from DisableSmartAccessGatewayUser response
+func CreateDisableSmartAccessGatewayUserResponse() (response *DisableSmartAccessGatewayUserResponse) {
+	response = &DisableSmartAccessGatewayUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 2
services/smartag/disassociate_acl.go

@@ -76,12 +76,12 @@ func (client *Client) DisassociateACLWithCallback(request *DisassociateACLReques
 // DisassociateACLRequest is the request struct for api DisassociateACL
 type DisassociateACLRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 }
 
 // DisassociateACLResponse is the response struct for api DisassociateACL

+ 108 - 0
services/smartag/disassociate_flow_log.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DisassociateFlowLog invokes the smartag.DisassociateFlowLog API synchronously
+// api document: https://help.aliyun.com/api/smartag/disassociateflowlog.html
+func (client *Client) DisassociateFlowLog(request *DisassociateFlowLogRequest) (response *DisassociateFlowLogResponse, err error) {
+	response = CreateDisassociateFlowLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DisassociateFlowLogWithChan invokes the smartag.DisassociateFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/disassociateflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DisassociateFlowLogWithChan(request *DisassociateFlowLogRequest) (<-chan *DisassociateFlowLogResponse, <-chan error) {
+	responseChan := make(chan *DisassociateFlowLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DisassociateFlowLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DisassociateFlowLogWithCallback invokes the smartag.DisassociateFlowLog API asynchronously
+// api document: https://help.aliyun.com/api/smartag/disassociateflowlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DisassociateFlowLogWithCallback(request *DisassociateFlowLogRequest, callback func(response *DisassociateFlowLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DisassociateFlowLogResponse
+		var err error
+		defer close(result)
+		response, err = client.DisassociateFlowLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DisassociateFlowLogRequest is the request struct for api DisassociateFlowLog
+type DisassociateFlowLogRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+}
+
+// DisassociateFlowLogResponse is the response struct for api DisassociateFlowLog
+type DisassociateFlowLogResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDisassociateFlowLogRequest creates a request to invoke DisassociateFlowLog API
+func CreateDisassociateFlowLogRequest() (request *DisassociateFlowLogRequest) {
+	request = &DisassociateFlowLogRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DisassociateFlowLog", "smartag", "openAPI")
+	return
+}
+
+// CreateDisassociateFlowLogResponse creates a response to parse from DisassociateFlowLog response
+func CreateDisassociateFlowLogResponse() (response *DisassociateFlowLogResponse) {
+	response = &DisassociateFlowLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/smartag/disassociate_qos.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DisassociateQos invokes the smartag.DisassociateQos API synchronously
+// api document: https://help.aliyun.com/api/smartag/disassociateqos.html
+func (client *Client) DisassociateQos(request *DisassociateQosRequest) (response *DisassociateQosResponse, err error) {
+	response = CreateDisassociateQosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DisassociateQosWithChan invokes the smartag.DisassociateQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/disassociateqos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DisassociateQosWithChan(request *DisassociateQosRequest) (<-chan *DisassociateQosResponse, <-chan error) {
+	responseChan := make(chan *DisassociateQosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DisassociateQos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DisassociateQosWithCallback invokes the smartag.DisassociateQos API asynchronously
+// api document: https://help.aliyun.com/api/smartag/disassociateqos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DisassociateQosWithCallback(request *DisassociateQosRequest, callback func(response *DisassociateQosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DisassociateQosResponse
+		var err error
+		defer close(result)
+		response, err = client.DisassociateQos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DisassociateQosRequest is the request struct for api DisassociateQos
+type DisassociateQosRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	QosId                string           `position:"Query" name:"QosId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// DisassociateQosResponse is the response struct for api DisassociateQos
+type DisassociateQosResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDisassociateQosRequest creates a request to invoke DisassociateQos API
+func CreateDisassociateQosRequest() (request *DisassociateQosRequest) {
+	request = &DisassociateQosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DisassociateQos", "smartag", "openAPI")
+	return
+}
+
+// CreateDisassociateQosResponse creates a response to parse from DisassociateQos response
+func CreateDisassociateQosResponse() (response *DisassociateQosResponse) {
+	response = &DisassociateQosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 3 - 3
services/smartag/downgrade_smart_access_gateway.go

@@ -77,13 +77,13 @@ func (client *Client) DowngradeSmartAccessGatewayWithCallback(request *Downgrade
 type DowngradeSmartAccessGatewayRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
-	AutoPay              requests.Boolean `position:"Query" name:"AutoPay"`
 	BandWidthSpec        requests.Integer `position:"Query" name:"BandWidthSpec"`
+	UserCount            requests.Integer `position:"Query" name:"UserCount"`
+	AutoPay              requests.Boolean `position:"Query" name:"AutoPay"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	UserCount            requests.Integer `position:"Query" name:"UserCount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	DataPlan             requests.Integer `position:"Query" name:"DataPlan"`
 }
 

+ 111 - 0
services/smartag/downgrade_smart_access_gateway_software.go

@@ -0,0 +1,111 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DowngradeSmartAccessGatewaySoftware invokes the smartag.DowngradeSmartAccessGatewaySoftware API synchronously
+// api document: https://help.aliyun.com/api/smartag/downgradesmartaccessgatewaysoftware.html
+func (client *Client) DowngradeSmartAccessGatewaySoftware(request *DowngradeSmartAccessGatewaySoftwareRequest) (response *DowngradeSmartAccessGatewaySoftwareResponse, err error) {
+	response = CreateDowngradeSmartAccessGatewaySoftwareResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DowngradeSmartAccessGatewaySoftwareWithChan invokes the smartag.DowngradeSmartAccessGatewaySoftware API asynchronously
+// api document: https://help.aliyun.com/api/smartag/downgradesmartaccessgatewaysoftware.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DowngradeSmartAccessGatewaySoftwareWithChan(request *DowngradeSmartAccessGatewaySoftwareRequest) (<-chan *DowngradeSmartAccessGatewaySoftwareResponse, <-chan error) {
+	responseChan := make(chan *DowngradeSmartAccessGatewaySoftwareResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DowngradeSmartAccessGatewaySoftware(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DowngradeSmartAccessGatewaySoftwareWithCallback invokes the smartag.DowngradeSmartAccessGatewaySoftware API asynchronously
+// api document: https://help.aliyun.com/api/smartag/downgradesmartaccessgatewaysoftware.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DowngradeSmartAccessGatewaySoftwareWithCallback(request *DowngradeSmartAccessGatewaySoftwareRequest, callback func(response *DowngradeSmartAccessGatewaySoftwareResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DowngradeSmartAccessGatewaySoftwareResponse
+		var err error
+		defer close(result)
+		response, err = client.DowngradeSmartAccessGatewaySoftware(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DowngradeSmartAccessGatewaySoftwareRequest is the request struct for api DowngradeSmartAccessGatewaySoftware
+type DowngradeSmartAccessGatewaySoftwareRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	UserCount            requests.Integer `position:"Query" name:"UserCount"`
+	AutoPay              requests.Boolean `position:"Query" name:"AutoPay"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	DataPlan             requests.Integer `position:"Query" name:"DataPlan"`
+}
+
+// DowngradeSmartAccessGatewaySoftwareResponse is the response struct for api DowngradeSmartAccessGatewaySoftware
+type DowngradeSmartAccessGatewaySoftwareResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	OrderId   string `json:"OrderId" xml:"OrderId"`
+}
+
+// CreateDowngradeSmartAccessGatewaySoftwareRequest creates a request to invoke DowngradeSmartAccessGatewaySoftware API
+func CreateDowngradeSmartAccessGatewaySoftwareRequest() (request *DowngradeSmartAccessGatewaySoftwareRequest) {
+	request = &DowngradeSmartAccessGatewaySoftwareRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "DowngradeSmartAccessGatewaySoftware", "smartag", "openAPI")
+	return
+}
+
+// CreateDowngradeSmartAccessGatewaySoftwareResponse creates a response to parse from DowngradeSmartAccessGatewaySoftware response
+func CreateDowngradeSmartAccessGatewaySoftwareResponse() (response *DowngradeSmartAccessGatewaySoftwareResponse) {
+	response = &DowngradeSmartAccessGatewaySoftwareResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/smartag/enable_smart_access_gateway_user.go

@@ -0,0 +1,108 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// EnableSmartAccessGatewayUser invokes the smartag.EnableSmartAccessGatewayUser API synchronously
+// api document: https://help.aliyun.com/api/smartag/enablesmartaccessgatewayuser.html
+func (client *Client) EnableSmartAccessGatewayUser(request *EnableSmartAccessGatewayUserRequest) (response *EnableSmartAccessGatewayUserResponse, err error) {
+	response = CreateEnableSmartAccessGatewayUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// EnableSmartAccessGatewayUserWithChan invokes the smartag.EnableSmartAccessGatewayUser API asynchronously
+// api document: https://help.aliyun.com/api/smartag/enablesmartaccessgatewayuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EnableSmartAccessGatewayUserWithChan(request *EnableSmartAccessGatewayUserRequest) (<-chan *EnableSmartAccessGatewayUserResponse, <-chan error) {
+	responseChan := make(chan *EnableSmartAccessGatewayUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.EnableSmartAccessGatewayUser(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// EnableSmartAccessGatewayUserWithCallback invokes the smartag.EnableSmartAccessGatewayUser API asynchronously
+// api document: https://help.aliyun.com/api/smartag/enablesmartaccessgatewayuser.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) EnableSmartAccessGatewayUserWithCallback(request *EnableSmartAccessGatewayUserRequest, callback func(response *EnableSmartAccessGatewayUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *EnableSmartAccessGatewayUserResponse
+		var err error
+		defer close(result)
+		response, err = client.EnableSmartAccessGatewayUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// EnableSmartAccessGatewayUserRequest is the request struct for api EnableSmartAccessGatewayUser
+type EnableSmartAccessGatewayUserRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	UserName             string           `position:"Query" name:"UserName"`
+}
+
+// EnableSmartAccessGatewayUserResponse is the response struct for api EnableSmartAccessGatewayUser
+type EnableSmartAccessGatewayUserResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateEnableSmartAccessGatewayUserRequest creates a request to invoke EnableSmartAccessGatewayUser API
+func CreateEnableSmartAccessGatewayUserRequest() (request *EnableSmartAccessGatewayUserRequest) {
+	request = &EnableSmartAccessGatewayUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "EnableSmartAccessGatewayUser", "smartag", "openAPI")
+	return
+}
+
+// CreateEnableSmartAccessGatewayUserResponse creates a response to parse from EnableSmartAccessGatewayUser response
+func CreateEnableSmartAccessGatewayUserResponse() (response *EnableSmartAccessGatewayUserResponse) {
+	response = &EnableSmartAccessGatewayUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 20 - 0
services/smartag/endpoint.go

@@ -0,0 +1,20 @@
+package smartag
+
+// EndpointMap Endpoint Data
+var EndpointMap map[string]string
+
+// EndpointType regional or central
+var EndpointType = "regional"
+
+// GetEndpointMap Get Endpoint Data Map
+func GetEndpointMap() map[string]string {
+	if EndpointMap == nil {
+		EndpointMap = map[string]string{}
+	}
+	return EndpointMap
+}
+
+// GetEndpointType Get Endpoint Type Value
+func GetEndpointType() string {
+	return EndpointType
+}

+ 3 - 3
services/smartag/grant_instance_to_cbn.go

@@ -77,12 +77,12 @@ func (client *Client) GrantInstanceToCbnWithCallback(request *GrantInstanceToCbn
 type GrantInstanceToCbnRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnInstanceId        string           `position:"Query" name:"CcnInstanceId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
-	CenUid               string           `position:"Query" name:"CenUid"`
-	CenInstanceId        string           `position:"Query" name:"CenInstanceId"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	CcnInstanceId        string           `position:"Query" name:"CcnInstanceId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	CenUid               string           `position:"Query" name:"CenUid"`
+	CenInstanceId        string           `position:"Query" name:"CenInstanceId"`
 }
 
 // GrantInstanceToCbnResponse is the response struct for api GrantInstanceToCbn

+ 110 - 0
services/smartag/grant_sag_instance_to_ccn.go

@@ -0,0 +1,110 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GrantSagInstanceToCcn invokes the smartag.GrantSagInstanceToCcn API synchronously
+// api document: https://help.aliyun.com/api/smartag/grantsaginstancetoccn.html
+func (client *Client) GrantSagInstanceToCcn(request *GrantSagInstanceToCcnRequest) (response *GrantSagInstanceToCcnResponse, err error) {
+	response = CreateGrantSagInstanceToCcnResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GrantSagInstanceToCcnWithChan invokes the smartag.GrantSagInstanceToCcn API asynchronously
+// api document: https://help.aliyun.com/api/smartag/grantsaginstancetoccn.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GrantSagInstanceToCcnWithChan(request *GrantSagInstanceToCcnRequest) (<-chan *GrantSagInstanceToCcnResponse, <-chan error) {
+	responseChan := make(chan *GrantSagInstanceToCcnResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GrantSagInstanceToCcn(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GrantSagInstanceToCcnWithCallback invokes the smartag.GrantSagInstanceToCcn API asynchronously
+// api document: https://help.aliyun.com/api/smartag/grantsaginstancetoccn.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GrantSagInstanceToCcnWithCallback(request *GrantSagInstanceToCcnRequest, callback func(response *GrantSagInstanceToCcnResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GrantSagInstanceToCcnResponse
+		var err error
+		defer close(result)
+		response, err = client.GrantSagInstanceToCcn(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GrantSagInstanceToCcnRequest is the request struct for api GrantSagInstanceToCcn
+type GrantSagInstanceToCcnRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnUid               requests.Integer `position:"Query" name:"CcnUid"`
+	CcnInstanceId        string           `position:"Query" name:"CcnInstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// GrantSagInstanceToCcnResponse is the response struct for api GrantSagInstanceToCcn
+type GrantSagInstanceToCcnResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	InstanceId string `json:"InstanceId" xml:"InstanceId"`
+}
+
+// CreateGrantSagInstanceToCcnRequest creates a request to invoke GrantSagInstanceToCcn API
+func CreateGrantSagInstanceToCcnRequest() (request *GrantSagInstanceToCcnRequest) {
+	request = &GrantSagInstanceToCcnRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "GrantSagInstanceToCcn", "smartag", "openAPI")
+	return
+}
+
+// CreateGrantSagInstanceToCcnResponse creates a response to parse from GrantSagInstanceToCcn response
+func CreateGrantSagInstanceToCcnResponse() (response *GrantSagInstanceToCcnResponse) {
+	response = &GrantSagInstanceToCcnResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 1
services/smartag/kick_out_clients.go

@@ -79,8 +79,8 @@ type KickOutClientsRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
 	Username             string           `position:"Query" name:"Username"`
 }
 

+ 2 - 2
services/smartag/modify_acl.go

@@ -76,12 +76,12 @@ func (client *Client) ModifyACLWithCallback(request *ModifyACLRequest, callback
 // ModifyACLRequest is the request struct for api ModifyACL
 type ModifyACLRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	Name                 string           `position:"Query" name:"Name"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	Name                 string           `position:"Query" name:"Name"`
 }
 
 // ModifyACLResponse is the response struct for api ModifyACL

+ 8 - 7
services/smartag/modify_acl_rule.go

@@ -76,21 +76,22 @@ func (client *Client) ModifyACLRuleWithCallback(request *ModifyACLRuleRequest, c
 // ModifyACLRuleRequest is the request struct for api ModifyACLRule
 type ModifyACLRuleRequest struct {
 	*requests.RpcRequest
-	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	SourcePortRange      string           `position:"Query" name:"SourcePortRange"`
+	SourceCidr           string           `position:"Query" name:"SourceCidr"`
+	Description          string           `position:"Query" name:"Description"`
+	Type                 string           `position:"Query" name:"Type"`
+	DestCidr             string           `position:"Query" name:"DestCidr"`
+	Direction            string           `position:"Query" name:"Direction"`
+	Policy               string           `position:"Query" name:"Policy"`
+	AclId                string           `position:"Query" name:"AclId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	IpProtocol           string           `position:"Query" name:"IpProtocol"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	SourceCidr           string           `position:"Query" name:"SourceCidr"`
-	Description          string           `position:"Query" name:"Description"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	Priority             requests.Integer `position:"Query" name:"Priority"`
 	AcrId                string           `position:"Query" name:"AcrId"`
-	DestCidr             string           `position:"Query" name:"DestCidr"`
 	DestPortRange        string           `position:"Query" name:"DestPortRange"`
-	Direction            string           `position:"Query" name:"Direction"`
-	Policy               string           `position:"Query" name:"Policy"`
 }
 
 // ModifyACLRuleResponse is the response struct for api ModifyACLRule
@@ -108,7 +109,7 @@ type ModifyACLRuleResponse struct {
 	DestPortRange   string `json:"DestPortRange" xml:"DestPortRange"`
 	Policy          string `json:"Policy" xml:"Policy"`
 	Priority        int    `json:"Priority" xml:"Priority"`
-	GmtCreate       int    `json:"GmtCreate" xml:"GmtCreate"`
+	GmtCreate       int64  `json:"GmtCreate" xml:"GmtCreate"`
 }
 
 // CreateModifyACLRuleRequest creates a request to invoke ModifyACLRule API

+ 4 - 4
services/smartag/modify_cloud_connect_network.go

@@ -77,14 +77,14 @@ func (client *Client) ModifyCloudConnectNetworkWithCallback(request *ModifyCloud
 type ModifyCloudConnectNetworkRequest struct {
 	*requests.RpcRequest
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CcnId                string           `position:"Query" name:"CcnId"`
+	Description          string           `position:"Query" name:"Description"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
-	CcnId                string           `position:"Query" name:"CcnId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
 	Name                 string           `position:"Query" name:"Name"`
 	CidrBlock            string           `position:"Query" name:"CidrBlock"`
-	Description          string           `position:"Query" name:"Description"`
-	SnatCidrBlock        string           `position:"Query" name:"SnatCidrBlock"`
-	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	InterworkingStatus   string           `position:"Query" name:"InterworkingStatus"`
 }
 
 // ModifyCloudConnectNetworkResponse is the response struct for api ModifyCloudConnectNetwork

+ 112 - 0
services/smartag/modify_device_auto_upgrade_policy.go

@@ -0,0 +1,112 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyDeviceAutoUpgradePolicy invokes the smartag.ModifyDeviceAutoUpgradePolicy API synchronously
+// api document: https://help.aliyun.com/api/smartag/modifydeviceautoupgradepolicy.html
+func (client *Client) ModifyDeviceAutoUpgradePolicy(request *ModifyDeviceAutoUpgradePolicyRequest) (response *ModifyDeviceAutoUpgradePolicyResponse, err error) {
+	response = CreateModifyDeviceAutoUpgradePolicyResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyDeviceAutoUpgradePolicyWithChan invokes the smartag.ModifyDeviceAutoUpgradePolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/modifydeviceautoupgradepolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyDeviceAutoUpgradePolicyWithChan(request *ModifyDeviceAutoUpgradePolicyRequest) (<-chan *ModifyDeviceAutoUpgradePolicyResponse, <-chan error) {
+	responseChan := make(chan *ModifyDeviceAutoUpgradePolicyResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyDeviceAutoUpgradePolicy(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyDeviceAutoUpgradePolicyWithCallback invokes the smartag.ModifyDeviceAutoUpgradePolicy API asynchronously
+// api document: https://help.aliyun.com/api/smartag/modifydeviceautoupgradepolicy.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyDeviceAutoUpgradePolicyWithCallback(request *ModifyDeviceAutoUpgradePolicyRequest, callback func(response *ModifyDeviceAutoUpgradePolicyResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyDeviceAutoUpgradePolicyResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyDeviceAutoUpgradePolicy(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyDeviceAutoUpgradePolicyRequest is the request struct for api ModifyDeviceAutoUpgradePolicy
+type ModifyDeviceAutoUpgradePolicyRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	CronExpression       string           `position:"Query" name:"CronExpression"`
+	TimeZone             string           `position:"Query" name:"TimeZone"`
+	UpgradeType          string           `position:"Query" name:"UpgradeType"`
+	Duration             requests.Integer `position:"Query" name:"Duration"`
+	SerialNumber         string           `position:"Query" name:"SerialNumber"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+}
+
+// ModifyDeviceAutoUpgradePolicyResponse is the response struct for api ModifyDeviceAutoUpgradePolicy
+type ModifyDeviceAutoUpgradePolicyResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyDeviceAutoUpgradePolicyRequest creates a request to invoke ModifyDeviceAutoUpgradePolicy API
+func CreateModifyDeviceAutoUpgradePolicyRequest() (request *ModifyDeviceAutoUpgradePolicyRequest) {
+	request = &ModifyDeviceAutoUpgradePolicyRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "ModifyDeviceAutoUpgradePolicy", "smartag", "openAPI")
+	return
+}
+
+// CreateModifyDeviceAutoUpgradePolicyResponse creates a response to parse from ModifyDeviceAutoUpgradePolicy response
+func CreateModifyDeviceAutoUpgradePolicyResponse() (response *ModifyDeviceAutoUpgradePolicyResponse) {
+	response = &ModifyDeviceAutoUpgradePolicyResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/smartag/modify_flow_log_attribute.go

@@ -0,0 +1,118 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyFlowLogAttribute invokes the smartag.ModifyFlowLogAttribute API synchronously
+// api document: https://help.aliyun.com/api/smartag/modifyflowlogattribute.html
+func (client *Client) ModifyFlowLogAttribute(request *ModifyFlowLogAttributeRequest) (response *ModifyFlowLogAttributeResponse, err error) {
+	response = CreateModifyFlowLogAttributeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyFlowLogAttributeWithChan invokes the smartag.ModifyFlowLogAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/modifyflowlogattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyFlowLogAttributeWithChan(request *ModifyFlowLogAttributeRequest) (<-chan *ModifyFlowLogAttributeResponse, <-chan error) {
+	responseChan := make(chan *ModifyFlowLogAttributeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyFlowLogAttribute(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyFlowLogAttributeWithCallback invokes the smartag.ModifyFlowLogAttribute API asynchronously
+// api document: https://help.aliyun.com/api/smartag/modifyflowlogattribute.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyFlowLogAttributeWithCallback(request *ModifyFlowLogAttributeRequest, callback func(response *ModifyFlowLogAttributeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyFlowLogAttributeResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyFlowLogAttribute(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyFlowLogAttributeRequest is the request struct for api ModifyFlowLogAttribute
+type ModifyFlowLogAttributeRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	NetflowVersion       string           `position:"Query" name:"NetflowVersion"`
+	Description          string           `position:"Query" name:"Description"`
+	InactiveAging        requests.Integer `position:"Query" name:"InactiveAging"`
+	SlsRegionId          string           `position:"Query" name:"SlsRegionId"`
+	ActiveAging          requests.Integer `position:"Query" name:"ActiveAging"`
+	OutputType           string           `position:"Query" name:"OutputType"`
+	ProjectName          string           `position:"Query" name:"ProjectName"`
+	LogstoreName         string           `position:"Query" name:"LogstoreName"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	NetflowServerPort    requests.Integer `position:"Query" name:"NetflowServerPort"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NetflowServerIp      string           `position:"Query" name:"NetflowServerIp"`
+	Name                 string           `position:"Query" name:"Name"`
+	FlowLogId            string           `position:"Query" name:"FlowLogId"`
+}
+
+// ModifyFlowLogAttributeResponse is the response struct for api ModifyFlowLogAttribute
+type ModifyFlowLogAttributeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyFlowLogAttributeRequest creates a request to invoke ModifyFlowLogAttribute API
+func CreateModifyFlowLogAttributeRequest() (request *ModifyFlowLogAttributeRequest) {
+	request = &ModifyFlowLogAttributeRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "ModifyFlowLogAttribute", "smartag", "openAPI")
+	return
+}
+
+// CreateModifyFlowLogAttributeResponse creates a response to parse from ModifyFlowLogAttribute response
+func CreateModifyFlowLogAttributeResponse() (response *ModifyFlowLogAttributeResponse) {
+	response = &ModifyFlowLogAttributeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 121 - 0
services/smartag/modify_health_check.go

@@ -0,0 +1,121 @@
+package smartag
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyHealthCheck invokes the smartag.ModifyHealthCheck API synchronously
+// api document: https://help.aliyun.com/api/smartag/modifyhealthcheck.html
+func (client *Client) ModifyHealthCheck(request *ModifyHealthCheckRequest) (response *ModifyHealthCheckResponse, err error) {
+	response = CreateModifyHealthCheckResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyHealthCheckWithChan invokes the smartag.ModifyHealthCheck API asynchronously
+// api document: https://help.aliyun.com/api/smartag/modifyhealthcheck.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyHealthCheckWithChan(request *ModifyHealthCheckRequest) (<-chan *ModifyHealthCheckResponse, <-chan error) {
+	responseChan := make(chan *ModifyHealthCheckResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyHealthCheck(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyHealthCheckWithCallback invokes the smartag.ModifyHealthCheck API asynchronously
+// api document: https://help.aliyun.com/api/smartag/modifyhealthcheck.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyHealthCheckWithCallback(request *ModifyHealthCheckRequest, callback func(response *ModifyHealthCheckResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyHealthCheckResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyHealthCheck(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyHealthCheckRequest is the request struct for api ModifyHealthCheck
+type ModifyHealthCheckRequest struct {
+	*requests.RpcRequest
+	ProbeInterval        requests.Integer `position:"Query" name:"ProbeInterval"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	DstPort              requests.Integer `position:"Query" name:"DstPort"`
+	Description          string           `position:"Query" name:"Description"`
+	HcInstanceId         string           `position:"Query" name:"HcInstanceId"`
+	Type                 string           `position:"Query" name:"Type"`
+	FailCountThreshold   requests.Integer `position:"Query" name:"FailCountThreshold"`
+	ProbeTimeout         requests.Integer `position:"Query" name:"ProbeTimeout"`
+	RttFailThreshold     requests.Integer `position:"Query" name:"RttFailThreshold"`
+	RttThreshold         requests.Integer `position:"Query" name:"RttThreshold"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	DstIpAddr            string           `position:"Query" name:"DstIpAddr"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	SrcIpAddr            string           `position:"Query" name:"SrcIpAddr"`
+	Name                 string           `position:"Query" name:"Name"`
+	SmartAGId            string           `position:"Query" name:"SmartAGId"`
+	SrcPort              requests.Integer `position:"Query" name:"SrcPort"`
+	ProbeCount           requests.Integer `position:"Query" name:"ProbeCount"`
+}
+
+// ModifyHealthCheckResponse is the response struct for api ModifyHealthCheck
+type ModifyHealthCheckResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyHealthCheckRequest creates a request to invoke ModifyHealthCheck API
+func CreateModifyHealthCheckRequest() (request *ModifyHealthCheckRequest) {
+	request = &ModifyHealthCheckRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Smartag", "2018-03-13", "ModifyHealthCheck", "smartag", "openAPI")
+	return
+}
+
+// CreateModifyHealthCheckResponse creates a response to parse from ModifyHealthCheck response
+func CreateModifyHealthCheckResponse() (response *ModifyHealthCheckResponse) {
+	response = &ModifyHealthCheckResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

Some files were not shown because too many files changed in this diff