Selaa lähdekoodia

Generated 2019-03-20 for WebPlus.

sdk-team 6 vuotta sitten
vanhempi
commit
f7b53401d4
100 muutettua tiedostoa jossa 5982 lisäystä ja 0 poistoa
  1. 3 0
      ChangeLog.txt
  2. 107 0
      services/webplus/abort_change.go
  3. 129 0
      services/webplus/client.go
  4. 116 0
      services/webplus/create_app_env.go
  5. 109 0
      services/webplus/create_application.go
  6. 115 0
      services/webplus/create_config_template.go
  7. 110 0
      services/webplus/create_pkg_version.go
  8. 106 0
      services/webplus/create_storage.go
  9. 106 0
      services/webplus/delete_app_env.go
  10. 106 0
      services/webplus/delete_application.go
  11. 106 0
      services/webplus/delete_change.go
  12. 106 0
      services/webplus/delete_config_template.go
  13. 106 0
      services/webplus/delete_pkg_version.go
  14. 107 0
      services/webplus/describe_app_env_instance_health.go
  15. 107 0
      services/webplus/describe_app_env_status.go
  16. 118 0
      services/webplus/describe_app_envs.go
  17. 117 0
      services/webplus/describe_applications.go
  18. 106 0
      services/webplus/describe_categories.go
  19. 108 0
      services/webplus/describe_change.go
  20. 113 0
      services/webplus/describe_changes.go
  21. 111 0
      services/webplus/describe_config_index.go
  22. 109 0
      services/webplus/describe_config_options.go
  23. 108 0
      services/webplus/describe_config_settings.go
  24. 114 0
      services/webplus/describe_config_templates.go
  25. 107 0
      services/webplus/describe_env_resource.go
  26. 117 0
      services/webplus/describe_events.go
  27. 107 0
      services/webplus/describe_gather_log_result.go
  28. 107 0
      services/webplus/describe_gather_stats_result.go
  29. 107 0
      services/webplus/describe_instance_health.go
  30. 114 0
      services/webplus/describe_pkg_versions.go
  31. 113 0
      services/webplus/describe_stacks.go
  32. 106 0
      services/webplus/describe_storage.go
  33. 111 0
      services/webplus/dry_run_create_app_env.go
  34. 107 0
      services/webplus/dry_run_rebuild_app_env.go
  35. 107 0
      services/webplus/dry_run_terminate_app_env.go
  36. 40 0
      services/webplus/endpoint.go
  37. 109 0
      services/webplus/gather_app_env_log.go
  38. 108 0
      services/webplus/gather_app_env_stats.go
  39. 107 0
      services/webplus/pause_change.go
  40. 108 0
      services/webplus/rebuild_app_env.go
  41. 107 0
      services/webplus/restart_app_env.go
  42. 107 0
      services/webplus/resume_change.go
  43. 107 0
      services/webplus/start_app_env.go
  44. 107 0
      services/webplus/stop_app_env.go
  45. 46 0
      services/webplus/struct_app_env.go
  46. 21 0
      services/webplus/struct_app_envs.go
  47. 31 0
      services/webplus/struct_application.go
  48. 21 0
      services/webplus/struct_applications.go
  49. 21 0
      services/webplus/struct_categories.go
  50. 27 0
      services/webplus/struct_category.go
  51. 36 0
      services/webplus/struct_change.go
  52. 21 0
      services/webplus/struct_changes.go
  53. 23 0
      services/webplus/struct_config_group.go
  54. 21 0
      services/webplus/struct_config_groups.go
  55. 37 0
      services/webplus/struct_config_option.go
  56. 21 0
      services/webplus/struct_config_options_in_describe_config_index.go
  57. 21 0
      services/webplus/struct_config_options_in_describe_config_options.go
  58. 24 0
      services/webplus/struct_config_path.go
  59. 21 0
      services/webplus/struct_config_paths.go
  60. 23 0
      services/webplus/struct_config_setting.go
  61. 21 0
      services/webplus/struct_config_settings.go
  62. 32 0
      services/webplus/struct_config_template.go
  63. 21 0
      services/webplus/struct_config_templates.go
  64. 25 0
      services/webplus/struct_config_validation_result.go
  65. 21 0
      services/webplus/struct_config_validation_results.go
  66. 23 0
      services/webplus/struct_demo_project.go
  67. 21 0
      services/webplus/struct_demo_projects.go
  68. 21 0
      services/webplus/struct_dry_run_info.go
  69. 23 0
      services/webplus/struct_env_change.go
  70. 24 0
      services/webplus/struct_env_change_detail.go
  71. 23 0
      services/webplus/struct_env_instance_health.go
  72. 31 0
      services/webplus/struct_env_resource.go
  73. 30 0
      services/webplus/struct_env_status.go
  74. 38 0
      services/webplus/struct_event.go
  75. 21 0
      services/webplus/struct_events.go
  76. 23 0
      services/webplus/struct_gather_log_result.go
  77. 22 0
      services/webplus/struct_gather_stats_result.go
  78. 21 0
      services/webplus/struct_instance.go
  79. 22 0
      services/webplus/struct_instance_agent_status.go
  80. 24 0
      services/webplus/struct_instance_app_status.go
  81. 24 0
      services/webplus/struct_instance_health.go
  82. 24 0
      services/webplus/struct_instance_health_in_describe_instance_health.go
  83. 21 0
      services/webplus/struct_instance_health_list.go
  84. 24 0
      services/webplus/struct_instance_result.go
  85. 21 0
      services/webplus/struct_instance_results_in_describe_gather_log_result.go
  86. 21 0
      services/webplus/struct_instance_results_in_describe_gather_stats_result.go
  87. 21 0
      services/webplus/struct_instances.go
  88. 24 0
      services/webplus/struct_load_balancer.go
  89. 21 0
      services/webplus/struct_load_balancers.go
  90. 21 0
      services/webplus/struct_monitor_group.go
  91. 21 0
      services/webplus/struct_msg_params.go
  92. 22 0
      services/webplus/struct_object_attr.go
  93. 21 0
      services/webplus/struct_object_attrs.go
  94. 22 0
      services/webplus/struct_operation.go
  95. 21 0
      services/webplus/struct_operations_in_create_app_env.go
  96. 21 0
      services/webplus/struct_operations_in_dry_run_create_app_env.go
  97. 21 0
      services/webplus/struct_operations_in_dry_run_rebuild_app_env.go
  98. 21 0
      services/webplus/struct_operations_in_dry_run_terminate_app_env.go
  99. 21 0
      services/webplus/struct_operations_in_rebuild_app_env.go
  100. 21 0
      services/webplus/struct_operations_in_terminate_app_env.go

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2019-08-07 Version: 1.60.92
+- Generated 2019-03-20 for `WebPlus`.
+
 2019-08-06 Version: 1.60.91
 - Supported GetMediaMeta for IMM.
 

+ 107 - 0
services/webplus/abort_change.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// AbortChange invokes the webplus.AbortChange API synchronously
+// api document: https://help.aliyun.com/api/webplus/abortchange.html
+func (client *Client) AbortChange(request *AbortChangeRequest) (response *AbortChangeResponse, err error) {
+	response = CreateAbortChangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AbortChangeWithChan invokes the webplus.AbortChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/abortchange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AbortChangeWithChan(request *AbortChangeRequest) (<-chan *AbortChangeResponse, <-chan error) {
+	responseChan := make(chan *AbortChangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AbortChange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AbortChangeWithCallback invokes the webplus.AbortChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/abortchange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AbortChangeWithCallback(request *AbortChangeRequest, callback func(response *AbortChangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AbortChangeResponse
+		var err error
+		defer close(result)
+		response, err = client.AbortChange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AbortChangeRequest is the request struct for api AbortChange
+type AbortChangeRequest struct {
+	*requests.RoaRequest
+	ChangeId string `position:"Body" name:"ChangeId"`
+}
+
+// AbortChangeResponse is the response struct for api AbortChange
+type AbortChangeResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateAbortChangeRequest creates a request to invoke AbortChange API
+func CreateAbortChangeRequest() (request *AbortChangeRequest) {
+	request = &AbortChangeRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "AbortChange", "/pop/v1/wam/change/abort", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateAbortChangeResponse creates a response to parse from AbortChange response
+func CreateAbortChangeResponse() (response *AbortChangeResponse) {
+	response = &AbortChangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 129 - 0
services/webplus/client.go

@@ -0,0 +1,129 @@
+package webplus
+
+//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 (
+	"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"
+)
+
+// Client is the sdk client struct, each func corresponds to an OpenAPI
+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
+}
+
+// NewClientWithProvider creates a sdk client with providers
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithProvider(regionId string, providers ...provider.Provider) (client *Client, err error) {
+	client = &Client{}
+	var pc provider.Provider
+	if len(providers) == 0 {
+		pc = provider.DefaultChain
+	} else {
+		pc = provider.NewProviderChain(providers)
+	}
+	err = client.InitWithProviderChain(regionId, pc)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
+// this is the common api to create a sdk client
+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
+}
+
+// NewClientWithAccessKey is a shortcut to create sdk client with accesskey
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithStsToken is a shortcut to create sdk client with sts token
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+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
+}
+
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn and policy
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+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
+}
+
+// NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithEcsRamRole(regionId, roleName)
+	SetEndpointDataToClient(client)
+	return
+}
+
+// NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+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
+}

+ 116 - 0
services/webplus/create_app_env.go

@@ -0,0 +1,116 @@
+package webplus
+
+//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"
+)
+
+// CreateAppEnv invokes the webplus.CreateAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/createappenv.html
+func (client *Client) CreateAppEnv(request *CreateAppEnvRequest) (response *CreateAppEnvResponse, err error) {
+	response = CreateCreateAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateAppEnvWithChan invokes the webplus.CreateAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAppEnvWithChan(request *CreateAppEnvRequest) (<-chan *CreateAppEnvResponse, <-chan error) {
+	responseChan := make(chan *CreateAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateAppEnvWithCallback invokes the webplus.CreateAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateAppEnvWithCallback(request *CreateAppEnvRequest, callback func(response *CreateAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateAppEnvRequest is the request struct for api CreateAppEnv
+type CreateAppEnvRequest struct {
+	*requests.RoaRequest
+	OptionSettings string           `position:"Body" name:"OptionSettings"`
+	DryRun         requests.Boolean `position:"Body" name:"DryRun"`
+	EnvName        string           `position:"Body" name:"EnvName"`
+	StackId        string           `position:"Body" name:"StackId"`
+	AppId          string           `position:"Body" name:"AppId"`
+	ProfileName    string           `position:"Body" name:"ProfileName"`
+	EnvDescription string           `position:"Body" name:"EnvDescription"`
+	PkgVersionId   string           `position:"Body" name:"PkgVersionId"`
+	SourceEnvId    string           `position:"Body" name:"SourceEnvId"`
+	TemplateId     string           `position:"Body" name:"TemplateId"`
+}
+
+// CreateAppEnvResponse is the response struct for api CreateAppEnv
+type CreateAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	Code            string          `json:"Code" xml:"Code"`
+	Message         string          `json:"Message" xml:"Message"`
+	EnvChangeDetail EnvChangeDetail `json:"EnvChangeDetail" xml:"EnvChangeDetail"`
+}
+
+// CreateCreateAppEnvRequest creates a request to invoke CreateAppEnv API
+func CreateCreateAppEnvRequest() (request *CreateAppEnvRequest) {
+	request = &CreateAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "CreateAppEnv", "/pop/v1/wam/appEnv", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateCreateAppEnvResponse creates a response to parse from CreateAppEnv response
+func CreateCreateAppEnvResponse() (response *CreateAppEnvResponse) {
+	response = &CreateAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/webplus/create_application.go

@@ -0,0 +1,109 @@
+package webplus
+
+//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"
+)
+
+// CreateApplication invokes the webplus.CreateApplication API synchronously
+// api document: https://help.aliyun.com/api/webplus/createapplication.html
+func (client *Client) CreateApplication(request *CreateApplicationRequest) (response *CreateApplicationResponse, err error) {
+	response = CreateCreateApplicationResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateApplicationWithChan invokes the webplus.CreateApplication API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createapplication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateApplicationWithChan(request *CreateApplicationRequest) (<-chan *CreateApplicationResponse, <-chan error) {
+	responseChan := make(chan *CreateApplicationResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateApplication(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateApplicationWithCallback invokes the webplus.CreateApplication API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createapplication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateApplicationWithCallback(request *CreateApplicationRequest, callback func(response *CreateApplicationResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateApplicationResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateApplication(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateApplicationRequest is the request struct for api CreateApplication
+type CreateApplicationRequest struct {
+	*requests.RoaRequest
+	AppDescription string `position:"Body" name:"AppDescription"`
+	AppName        string `position:"Body" name:"AppName"`
+	CategoryName   string `position:"Body" name:"CategoryName"`
+}
+
+// CreateApplicationResponse is the response struct for api CreateApplication
+type CreateApplicationResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	Code        string      `json:"Code" xml:"Code"`
+	Message     string      `json:"Message" xml:"Message"`
+	Application Application `json:"Application" xml:"Application"`
+}
+
+// CreateCreateApplicationRequest creates a request to invoke CreateApplication API
+func CreateCreateApplicationRequest() (request *CreateApplicationRequest) {
+	request = &CreateApplicationRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "CreateApplication", "/pop/v1/wam/application", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateCreateApplicationResponse creates a response to parse from CreateApplication response
+func CreateCreateApplicationResponse() (response *CreateApplicationResponse) {
+	response = &CreateApplicationResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/webplus/create_config_template.go

@@ -0,0 +1,115 @@
+package webplus
+
+//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"
+)
+
+// CreateConfigTemplate invokes the webplus.CreateConfigTemplate API synchronously
+// api document: https://help.aliyun.com/api/webplus/createconfigtemplate.html
+func (client *Client) CreateConfigTemplate(request *CreateConfigTemplateRequest) (response *CreateConfigTemplateResponse, err error) {
+	response = CreateCreateConfigTemplateResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateConfigTemplateWithChan invokes the webplus.CreateConfigTemplate API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createconfigtemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateConfigTemplateWithChan(request *CreateConfigTemplateRequest) (<-chan *CreateConfigTemplateResponse, <-chan error) {
+	responseChan := make(chan *CreateConfigTemplateResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateConfigTemplate(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateConfigTemplateWithCallback invokes the webplus.CreateConfigTemplate API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createconfigtemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateConfigTemplateWithCallback(request *CreateConfigTemplateRequest, callback func(response *CreateConfigTemplateResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateConfigTemplateResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateConfigTemplate(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateConfigTemplateRequest is the request struct for api CreateConfigTemplate
+type CreateConfigTemplateRequest struct {
+	*requests.RoaRequest
+	OptionSettings      string `position:"Body" name:"OptionSettings"`
+	SourceTemplateId    string `position:"Body" name:"SourceTemplateId"`
+	AppId               string `position:"Body" name:"AppId"`
+	StackId             string `position:"Body" name:"StackId"`
+	ProfileName         string `position:"Body" name:"ProfileName"`
+	TemplateName        string `position:"Body" name:"TemplateName"`
+	SourceEnvId         string `position:"Body" name:"SourceEnvId"`
+	PkgVersionId        string `position:"Body" name:"PkgVersionId"`
+	TemplateDescription string `position:"Body" name:"TemplateDescription"`
+}
+
+// CreateConfigTemplateResponse is the response struct for api CreateConfigTemplate
+type CreateConfigTemplateResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	Code           string         `json:"Code" xml:"Code"`
+	Message        string         `json:"Message" xml:"Message"`
+	ConfigTemplate ConfigTemplate `json:"ConfigTemplate" xml:"ConfigTemplate"`
+}
+
+// CreateCreateConfigTemplateRequest creates a request to invoke CreateConfigTemplate API
+func CreateCreateConfigTemplateRequest() (request *CreateConfigTemplateRequest) {
+	request = &CreateConfigTemplateRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "CreateConfigTemplate", "/pop/v1/wam/configTemplate", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateCreateConfigTemplateResponse creates a response to parse from CreateConfigTemplate response
+func CreateCreateConfigTemplateResponse() (response *CreateConfigTemplateResponse) {
+	response = &CreateConfigTemplateResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/webplus/create_pkg_version.go

@@ -0,0 +1,110 @@
+package webplus
+
+//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"
+)
+
+// CreatePkgVersion invokes the webplus.CreatePkgVersion API synchronously
+// api document: https://help.aliyun.com/api/webplus/createpkgversion.html
+func (client *Client) CreatePkgVersion(request *CreatePkgVersionRequest) (response *CreatePkgVersionResponse, err error) {
+	response = CreateCreatePkgVersionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreatePkgVersionWithChan invokes the webplus.CreatePkgVersion API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createpkgversion.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePkgVersionWithChan(request *CreatePkgVersionRequest) (<-chan *CreatePkgVersionResponse, <-chan error) {
+	responseChan := make(chan *CreatePkgVersionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreatePkgVersion(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreatePkgVersionWithCallback invokes the webplus.CreatePkgVersion API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createpkgversion.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePkgVersionWithCallback(request *CreatePkgVersionRequest, callback func(response *CreatePkgVersionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreatePkgVersionResponse
+		var err error
+		defer close(result)
+		response, err = client.CreatePkgVersion(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreatePkgVersionRequest is the request struct for api CreatePkgVersion
+type CreatePkgVersionRequest struct {
+	*requests.RoaRequest
+	PackageSource         string `position:"Body" name:"PackageSource"`
+	PkgVersionLabel       string `position:"Body" name:"PkgVersionLabel"`
+	PkgVersionDescription string `position:"Body" name:"PkgVersionDescription"`
+	AppId                 string `position:"Body" name:"AppId"`
+}
+
+// CreatePkgVersionResponse is the response struct for api CreatePkgVersion
+type CreatePkgVersionResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Code       string     `json:"Code" xml:"Code"`
+	Message    string     `json:"Message" xml:"Message"`
+	PkgVersion PkgVersion `json:"PkgVersion" xml:"PkgVersion"`
+}
+
+// CreateCreatePkgVersionRequest creates a request to invoke CreatePkgVersion API
+func CreateCreatePkgVersionRequest() (request *CreatePkgVersionRequest) {
+	request = &CreatePkgVersionRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "CreatePkgVersion", "/pop/v1/wam/pkgVersion", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateCreatePkgVersionResponse creates a response to parse from CreatePkgVersion response
+func CreateCreatePkgVersionResponse() (response *CreatePkgVersionResponse) {
+	response = &CreatePkgVersionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/create_storage.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// CreateStorage invokes the webplus.CreateStorage API synchronously
+// api document: https://help.aliyun.com/api/webplus/createstorage.html
+func (client *Client) CreateStorage(request *CreateStorageRequest) (response *CreateStorageResponse, err error) {
+	response = CreateCreateStorageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateStorageWithChan invokes the webplus.CreateStorage API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createstorage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateStorageWithChan(request *CreateStorageRequest) (<-chan *CreateStorageResponse, <-chan error) {
+	responseChan := make(chan *CreateStorageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateStorage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateStorageWithCallback invokes the webplus.CreateStorage API asynchronously
+// api document: https://help.aliyun.com/api/webplus/createstorage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateStorageWithCallback(request *CreateStorageRequest, callback func(response *CreateStorageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateStorageResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateStorage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateStorageRequest is the request struct for api CreateStorage
+type CreateStorageRequest struct {
+	*requests.RoaRequest
+}
+
+// CreateStorageResponse is the response struct for api CreateStorage
+type CreateStorageResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Code      string  `json:"Code" xml:"Code"`
+	Message   string  `json:"Message" xml:"Message"`
+	Storage   Storage `json:"Storage" xml:"Storage"`
+}
+
+// CreateCreateStorageRequest creates a request to invoke CreateStorage API
+func CreateCreateStorageRequest() (request *CreateStorageRequest) {
+	request = &CreateStorageRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "CreateStorage", "/pop/v1/wam/storage", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateCreateStorageResponse creates a response to parse from CreateStorage response
+func CreateCreateStorageResponse() (response *CreateStorageResponse) {
+	response = &CreateStorageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/delete_app_env.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DeleteAppEnv invokes the webplus.DeleteAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/deleteappenv.html
+func (client *Client) DeleteAppEnv(request *DeleteAppEnvRequest) (response *DeleteAppEnvResponse, err error) {
+	response = CreateDeleteAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteAppEnvWithChan invokes the webplus.DeleteAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deleteappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAppEnvWithChan(request *DeleteAppEnvRequest) (<-chan *DeleteAppEnvResponse, <-chan error) {
+	responseChan := make(chan *DeleteAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteAppEnvWithCallback invokes the webplus.DeleteAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deleteappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteAppEnvWithCallback(request *DeleteAppEnvRequest, callback func(response *DeleteAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteAppEnvRequest is the request struct for api DeleteAppEnv
+type DeleteAppEnvRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Query" name:"EnvId"`
+}
+
+// DeleteAppEnvResponse is the response struct for api DeleteAppEnv
+type DeleteAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      string `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+}
+
+// CreateDeleteAppEnvRequest creates a request to invoke DeleteAppEnv API
+func CreateDeleteAppEnvRequest() (request *DeleteAppEnvRequest) {
+	request = &DeleteAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DeleteAppEnv", "/pop/v1/wam/appEnv", "webx", "openAPI")
+	request.Method = requests.DELETE
+	return
+}
+
+// CreateDeleteAppEnvResponse creates a response to parse from DeleteAppEnv response
+func CreateDeleteAppEnvResponse() (response *DeleteAppEnvResponse) {
+	response = &DeleteAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/delete_application.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DeleteApplication invokes the webplus.DeleteApplication API synchronously
+// api document: https://help.aliyun.com/api/webplus/deleteapplication.html
+func (client *Client) DeleteApplication(request *DeleteApplicationRequest) (response *DeleteApplicationResponse, err error) {
+	response = CreateDeleteApplicationResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteApplicationWithChan invokes the webplus.DeleteApplication API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deleteapplication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteApplicationWithChan(request *DeleteApplicationRequest) (<-chan *DeleteApplicationResponse, <-chan error) {
+	responseChan := make(chan *DeleteApplicationResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteApplication(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteApplicationWithCallback invokes the webplus.DeleteApplication API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deleteapplication.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteApplicationWithCallback(request *DeleteApplicationRequest, callback func(response *DeleteApplicationResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteApplicationResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteApplication(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteApplicationRequest is the request struct for api DeleteApplication
+type DeleteApplicationRequest struct {
+	*requests.RoaRequest
+	AppId string `position:"Query" name:"AppId"`
+}
+
+// DeleteApplicationResponse is the response struct for api DeleteApplication
+type DeleteApplicationResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      string `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+}
+
+// CreateDeleteApplicationRequest creates a request to invoke DeleteApplication API
+func CreateDeleteApplicationRequest() (request *DeleteApplicationRequest) {
+	request = &DeleteApplicationRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DeleteApplication", "/pop/v1/wam/application", "webx", "openAPI")
+	request.Method = requests.DELETE
+	return
+}
+
+// CreateDeleteApplicationResponse creates a response to parse from DeleteApplication response
+func CreateDeleteApplicationResponse() (response *DeleteApplicationResponse) {
+	response = &DeleteApplicationResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/delete_change.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DeleteChange invokes the webplus.DeleteChange API synchronously
+// api document: https://help.aliyun.com/api/webplus/deletechange.html
+func (client *Client) DeleteChange(request *DeleteChangeRequest) (response *DeleteChangeResponse, err error) {
+	response = CreateDeleteChangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteChangeWithChan invokes the webplus.DeleteChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deletechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteChangeWithChan(request *DeleteChangeRequest) (<-chan *DeleteChangeResponse, <-chan error) {
+	responseChan := make(chan *DeleteChangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteChange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteChangeWithCallback invokes the webplus.DeleteChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deletechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteChangeWithCallback(request *DeleteChangeRequest, callback func(response *DeleteChangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteChangeResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteChange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteChangeRequest is the request struct for api DeleteChange
+type DeleteChangeRequest struct {
+	*requests.RoaRequest
+	ChangeId string `position:"Query" name:"ChangeId"`
+}
+
+// DeleteChangeResponse is the response struct for api DeleteChange
+type DeleteChangeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      string `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+}
+
+// CreateDeleteChangeRequest creates a request to invoke DeleteChange API
+func CreateDeleteChangeRequest() (request *DeleteChangeRequest) {
+	request = &DeleteChangeRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DeleteChange", "/pop/v1/wam/change", "webx", "openAPI")
+	request.Method = requests.DELETE
+	return
+}
+
+// CreateDeleteChangeResponse creates a response to parse from DeleteChange response
+func CreateDeleteChangeResponse() (response *DeleteChangeResponse) {
+	response = &DeleteChangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/delete_config_template.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DeleteConfigTemplate invokes the webplus.DeleteConfigTemplate API synchronously
+// api document: https://help.aliyun.com/api/webplus/deleteconfigtemplate.html
+func (client *Client) DeleteConfigTemplate(request *DeleteConfigTemplateRequest) (response *DeleteConfigTemplateResponse, err error) {
+	response = CreateDeleteConfigTemplateResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteConfigTemplateWithChan invokes the webplus.DeleteConfigTemplate API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deleteconfigtemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteConfigTemplateWithChan(request *DeleteConfigTemplateRequest) (<-chan *DeleteConfigTemplateResponse, <-chan error) {
+	responseChan := make(chan *DeleteConfigTemplateResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteConfigTemplate(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteConfigTemplateWithCallback invokes the webplus.DeleteConfigTemplate API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deleteconfigtemplate.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteConfigTemplateWithCallback(request *DeleteConfigTemplateRequest, callback func(response *DeleteConfigTemplateResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteConfigTemplateResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteConfigTemplate(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteConfigTemplateRequest is the request struct for api DeleteConfigTemplate
+type DeleteConfigTemplateRequest struct {
+	*requests.RoaRequest
+	TemplateId string `position:"Query" name:"TemplateId"`
+}
+
+// DeleteConfigTemplateResponse is the response struct for api DeleteConfigTemplate
+type DeleteConfigTemplateResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      string `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+}
+
+// CreateDeleteConfigTemplateRequest creates a request to invoke DeleteConfigTemplate API
+func CreateDeleteConfigTemplateRequest() (request *DeleteConfigTemplateRequest) {
+	request = &DeleteConfigTemplateRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DeleteConfigTemplate", "/pop/v1/wam/configTemplate", "webx", "openAPI")
+	request.Method = requests.DELETE
+	return
+}
+
+// CreateDeleteConfigTemplateResponse creates a response to parse from DeleteConfigTemplate response
+func CreateDeleteConfigTemplateResponse() (response *DeleteConfigTemplateResponse) {
+	response = &DeleteConfigTemplateResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/delete_pkg_version.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DeletePkgVersion invokes the webplus.DeletePkgVersion API synchronously
+// api document: https://help.aliyun.com/api/webplus/deletepkgversion.html
+func (client *Client) DeletePkgVersion(request *DeletePkgVersionRequest) (response *DeletePkgVersionResponse, err error) {
+	response = CreateDeletePkgVersionResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeletePkgVersionWithChan invokes the webplus.DeletePkgVersion API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deletepkgversion.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeletePkgVersionWithChan(request *DeletePkgVersionRequest) (<-chan *DeletePkgVersionResponse, <-chan error) {
+	responseChan := make(chan *DeletePkgVersionResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeletePkgVersion(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeletePkgVersionWithCallback invokes the webplus.DeletePkgVersion API asynchronously
+// api document: https://help.aliyun.com/api/webplus/deletepkgversion.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeletePkgVersionWithCallback(request *DeletePkgVersionRequest, callback func(response *DeletePkgVersionResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeletePkgVersionResponse
+		var err error
+		defer close(result)
+		response, err = client.DeletePkgVersion(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeletePkgVersionRequest is the request struct for api DeletePkgVersion
+type DeletePkgVersionRequest struct {
+	*requests.RoaRequest
+	PkgVersionId string `position:"Query" name:"PkgVersionId"`
+}
+
+// DeletePkgVersionResponse is the response struct for api DeletePkgVersion
+type DeletePkgVersionResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      string `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+}
+
+// CreateDeletePkgVersionRequest creates a request to invoke DeletePkgVersion API
+func CreateDeletePkgVersionRequest() (request *DeletePkgVersionRequest) {
+	request = &DeletePkgVersionRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DeletePkgVersion", "/pop/v1/wam/pkgVersion", "webx", "openAPI")
+	request.Method = requests.DELETE
+	return
+}
+
+// CreateDeletePkgVersionResponse creates a response to parse from DeletePkgVersion response
+func CreateDeletePkgVersionResponse() (response *DeletePkgVersionResponse) {
+	response = &DeletePkgVersionResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/describe_app_env_instance_health.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DescribeAppEnvInstanceHealth invokes the webplus.DescribeAppEnvInstanceHealth API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvinstancehealth.html
+func (client *Client) DescribeAppEnvInstanceHealth(request *DescribeAppEnvInstanceHealthRequest) (response *DescribeAppEnvInstanceHealthResponse, err error) {
+	response = CreateDescribeAppEnvInstanceHealthResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAppEnvInstanceHealthWithChan invokes the webplus.DescribeAppEnvInstanceHealth API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvinstancehealth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAppEnvInstanceHealthWithChan(request *DescribeAppEnvInstanceHealthRequest) (<-chan *DescribeAppEnvInstanceHealthResponse, <-chan error) {
+	responseChan := make(chan *DescribeAppEnvInstanceHealthResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAppEnvInstanceHealth(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAppEnvInstanceHealthWithCallback invokes the webplus.DescribeAppEnvInstanceHealth API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvinstancehealth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAppEnvInstanceHealthWithCallback(request *DescribeAppEnvInstanceHealthRequest, callback func(response *DescribeAppEnvInstanceHealthResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAppEnvInstanceHealthResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAppEnvInstanceHealth(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAppEnvInstanceHealthRequest is the request struct for api DescribeAppEnvInstanceHealth
+type DescribeAppEnvInstanceHealthRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Query" name:"EnvId"`
+}
+
+// DescribeAppEnvInstanceHealthResponse is the response struct for api DescribeAppEnvInstanceHealth
+type DescribeAppEnvInstanceHealthResponse struct {
+	*responses.BaseResponse
+	RequestId         string            `json:"RequestId" xml:"RequestId"`
+	Code              string            `json:"Code" xml:"Code"`
+	Message           string            `json:"Message" xml:"Message"`
+	EnvInstanceHealth EnvInstanceHealth `json:"EnvInstanceHealth" xml:"EnvInstanceHealth"`
+}
+
+// CreateDescribeAppEnvInstanceHealthRequest creates a request to invoke DescribeAppEnvInstanceHealth API
+func CreateDescribeAppEnvInstanceHealthRequest() (request *DescribeAppEnvInstanceHealthRequest) {
+	request = &DescribeAppEnvInstanceHealthRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeAppEnvInstanceHealth", "/pop/v1/wam/appEnv/instanceHealth", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeAppEnvInstanceHealthResponse creates a response to parse from DescribeAppEnvInstanceHealth response
+func CreateDescribeAppEnvInstanceHealthResponse() (response *DescribeAppEnvInstanceHealthResponse) {
+	response = &DescribeAppEnvInstanceHealthResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/describe_app_env_status.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DescribeAppEnvStatus invokes the webplus.DescribeAppEnvStatus API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvstatus.html
+func (client *Client) DescribeAppEnvStatus(request *DescribeAppEnvStatusRequest) (response *DescribeAppEnvStatusResponse, err error) {
+	response = CreateDescribeAppEnvStatusResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAppEnvStatusWithChan invokes the webplus.DescribeAppEnvStatus API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvstatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAppEnvStatusWithChan(request *DescribeAppEnvStatusRequest) (<-chan *DescribeAppEnvStatusResponse, <-chan error) {
+	responseChan := make(chan *DescribeAppEnvStatusResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAppEnvStatus(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAppEnvStatusWithCallback invokes the webplus.DescribeAppEnvStatus API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvstatus.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAppEnvStatusWithCallback(request *DescribeAppEnvStatusRequest, callback func(response *DescribeAppEnvStatusResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAppEnvStatusResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAppEnvStatus(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAppEnvStatusRequest is the request struct for api DescribeAppEnvStatus
+type DescribeAppEnvStatusRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Query" name:"EnvId"`
+}
+
+// DescribeAppEnvStatusResponse is the response struct for api DescribeAppEnvStatus
+type DescribeAppEnvStatusResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvStatus EnvStatus `json:"EnvStatus" xml:"EnvStatus"`
+}
+
+// CreateDescribeAppEnvStatusRequest creates a request to invoke DescribeAppEnvStatus API
+func CreateDescribeAppEnvStatusRequest() (request *DescribeAppEnvStatusRequest) {
+	request = &DescribeAppEnvStatusRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeAppEnvStatus", "/pop/v1/wam/appEnv/status", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeAppEnvStatusResponse creates a response to parse from DescribeAppEnvStatus response
+func CreateDescribeAppEnvStatusResponse() (response *DescribeAppEnvStatusResponse) {
+	response = &DescribeAppEnvStatusResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 118 - 0
services/webplus/describe_app_envs.go

@@ -0,0 +1,118 @@
+package webplus
+
+//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"
+)
+
+// DescribeAppEnvs invokes the webplus.DescribeAppEnvs API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvs.html
+func (client *Client) DescribeAppEnvs(request *DescribeAppEnvsRequest) (response *DescribeAppEnvsResponse, err error) {
+	response = CreateDescribeAppEnvsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeAppEnvsWithChan invokes the webplus.DescribeAppEnvs API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAppEnvsWithChan(request *DescribeAppEnvsRequest) (<-chan *DescribeAppEnvsResponse, <-chan error) {
+	responseChan := make(chan *DescribeAppEnvsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeAppEnvs(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeAppEnvsWithCallback invokes the webplus.DescribeAppEnvs API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeappenvs.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeAppEnvsWithCallback(request *DescribeAppEnvsRequest, callback func(response *DescribeAppEnvsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeAppEnvsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeAppEnvs(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeAppEnvsRequest is the request struct for api DescribeAppEnvs
+type DescribeAppEnvsRequest struct {
+	*requests.RoaRequest
+	RecentUpdated     requests.Boolean `position:"Query" name:"RecentUpdated"`
+	EnvName           string           `position:"Query" name:"EnvName"`
+	AppId             string           `position:"Query" name:"AppId"`
+	PageSize          requests.Integer `position:"Query" name:"PageSize"`
+	IncludeTerminated requests.Boolean `position:"Query" name:"IncludeTerminated"`
+	EnvId             string           `position:"Query" name:"EnvId"`
+	StackSearch       string           `position:"Query" name:"StackSearch"`
+	PageNumber        requests.Integer `position:"Query" name:"PageNumber"`
+	EnvSearch         string           `position:"Query" name:"EnvSearch"`
+}
+
+// DescribeAppEnvsResponse is the response struct for api DescribeAppEnvs
+type DescribeAppEnvsResponse struct {
+	*responses.BaseResponse
+	RequestId  string  `json:"RequestId" xml:"RequestId"`
+	Code       string  `json:"Code" xml:"Code"`
+	Message    string  `json:"Message" xml:"Message"`
+	PageNumber int     `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int     `json:"PageSize" xml:"PageSize"`
+	TotalCount int     `json:"TotalCount" xml:"TotalCount"`
+	AppEnvs    AppEnvs `json:"AppEnvs" xml:"AppEnvs"`
+}
+
+// CreateDescribeAppEnvsRequest creates a request to invoke DescribeAppEnvs API
+func CreateDescribeAppEnvsRequest() (request *DescribeAppEnvsRequest) {
+	request = &DescribeAppEnvsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeAppEnvs", "/pop/v1/wam/appEnv", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeAppEnvsResponse creates a response to parse from DescribeAppEnvs response
+func CreateDescribeAppEnvsResponse() (response *DescribeAppEnvsResponse) {
+	response = &DescribeAppEnvsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/webplus/describe_applications.go

@@ -0,0 +1,117 @@
+package webplus
+
+//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"
+)
+
+// DescribeApplications invokes the webplus.DescribeApplications API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeapplications.html
+func (client *Client) DescribeApplications(request *DescribeApplicationsRequest) (response *DescribeApplicationsResponse, err error) {
+	response = CreateDescribeApplicationsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeApplicationsWithChan invokes the webplus.DescribeApplications API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeapplications.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeApplicationsWithChan(request *DescribeApplicationsRequest) (<-chan *DescribeApplicationsResponse, <-chan error) {
+	responseChan := make(chan *DescribeApplicationsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeApplications(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeApplicationsWithCallback invokes the webplus.DescribeApplications API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeapplications.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeApplicationsWithCallback(request *DescribeApplicationsRequest, callback func(response *DescribeApplicationsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeApplicationsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeApplications(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeApplicationsRequest is the request struct for api DescribeApplications
+type DescribeApplicationsRequest struct {
+	*requests.RoaRequest
+	AppName        string           `position:"Query" name:"AppName"`
+	AppId          string           `position:"Query" name:"AppId"`
+	PageSize       requests.Integer `position:"Query" name:"PageSize"`
+	CategorySearch string           `position:"Query" name:"CategorySearch"`
+	StackSearch    string           `position:"Query" name:"StackSearch"`
+	PageNumber     requests.Integer `position:"Query" name:"PageNumber"`
+	AppSearch      string           `position:"Query" name:"AppSearch"`
+	EnvSearch      string           `position:"Query" name:"EnvSearch"`
+}
+
+// DescribeApplicationsResponse is the response struct for api DescribeApplications
+type DescribeApplicationsResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	Code         string       `json:"Code" xml:"Code"`
+	Message      string       `json:"Message" xml:"Message"`
+	PageNumber   int          `json:"PageNumber" xml:"PageNumber"`
+	PageSize     int          `json:"PageSize" xml:"PageSize"`
+	TotalCount   int          `json:"TotalCount" xml:"TotalCount"`
+	Applications Applications `json:"Applications" xml:"Applications"`
+}
+
+// CreateDescribeApplicationsRequest creates a request to invoke DescribeApplications API
+func CreateDescribeApplicationsRequest() (request *DescribeApplicationsRequest) {
+	request = &DescribeApplicationsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeApplications", "/pop/v1/wam/application", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeApplicationsResponse creates a response to parse from DescribeApplications response
+func CreateDescribeApplicationsResponse() (response *DescribeApplicationsResponse) {
+	response = &DescribeApplicationsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/describe_categories.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DescribeCategories invokes the webplus.DescribeCategories API synchronously
+// api document: https://help.aliyun.com/api/webplus/describecategories.html
+func (client *Client) DescribeCategories(request *DescribeCategoriesRequest) (response *DescribeCategoriesResponse, err error) {
+	response = CreateDescribeCategoriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeCategoriesWithChan invokes the webplus.DescribeCategories API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describecategories.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCategoriesWithChan(request *DescribeCategoriesRequest) (<-chan *DescribeCategoriesResponse, <-chan error) {
+	responseChan := make(chan *DescribeCategoriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeCategories(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeCategoriesWithCallback invokes the webplus.DescribeCategories API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describecategories.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeCategoriesWithCallback(request *DescribeCategoriesRequest, callback func(response *DescribeCategoriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeCategoriesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeCategories(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeCategoriesRequest is the request struct for api DescribeCategories
+type DescribeCategoriesRequest struct {
+	*requests.RoaRequest
+}
+
+// DescribeCategoriesResponse is the response struct for api DescribeCategories
+type DescribeCategoriesResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Code       string     `json:"Code" xml:"Code"`
+	Message    string     `json:"Message" xml:"Message"`
+	Categories Categories `json:"Categories" xml:"Categories"`
+}
+
+// CreateDescribeCategoriesRequest creates a request to invoke DescribeCategories API
+func CreateDescribeCategoriesRequest() (request *DescribeCategoriesRequest) {
+	request = &DescribeCategoriesRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeCategories", "/pop/v1/wam/category", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeCategoriesResponse creates a response to parse from DescribeCategories response
+func CreateDescribeCategoriesResponse() (response *DescribeCategoriesResponse) {
+	response = &DescribeCategoriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/webplus/describe_change.go

@@ -0,0 +1,108 @@
+package webplus
+
+//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"
+)
+
+// DescribeChange invokes the webplus.DescribeChange API synchronously
+// api document: https://help.aliyun.com/api/webplus/describechange.html
+func (client *Client) DescribeChange(request *DescribeChangeRequest) (response *DescribeChangeResponse, err error) {
+	response = CreateDescribeChangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeChangeWithChan invokes the webplus.DescribeChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeChangeWithChan(request *DescribeChangeRequest) (<-chan *DescribeChangeResponse, <-chan error) {
+	responseChan := make(chan *DescribeChangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeChange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeChangeWithCallback invokes the webplus.DescribeChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeChangeWithCallback(request *DescribeChangeRequest, callback func(response *DescribeChangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeChangeResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeChange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeChangeRequest is the request struct for api DescribeChange
+type DescribeChangeRequest struct {
+	*requests.RoaRequest
+	EnvId    string `position:"Query" name:"EnvId"`
+	ChangeId string `position:"Query" name:"ChangeId"`
+}
+
+// DescribeChangeResponse is the response struct for api DescribeChange
+type DescribeChangeResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	Code      string `json:"Code" xml:"Code"`
+	Message   string `json:"Message" xml:"Message"`
+	Change    Change `json:"Change" xml:"Change"`
+}
+
+// CreateDescribeChangeRequest creates a request to invoke DescribeChange API
+func CreateDescribeChangeRequest() (request *DescribeChangeRequest) {
+	request = &DescribeChangeRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeChange", "/pop/v1/wam/changeInfo", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeChangeResponse creates a response to parse from DescribeChange response
+func CreateDescribeChangeResponse() (response *DescribeChangeResponse) {
+	response = &DescribeChangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/webplus/describe_changes.go

@@ -0,0 +1,113 @@
+package webplus
+
+//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"
+)
+
+// DescribeChanges invokes the webplus.DescribeChanges API synchronously
+// api document: https://help.aliyun.com/api/webplus/describechanges.html
+func (client *Client) DescribeChanges(request *DescribeChangesRequest) (response *DescribeChangesResponse, err error) {
+	response = CreateDescribeChangesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeChangesWithChan invokes the webplus.DescribeChanges API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describechanges.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeChangesWithChan(request *DescribeChangesRequest) (<-chan *DescribeChangesResponse, <-chan error) {
+	responseChan := make(chan *DescribeChangesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeChanges(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeChangesWithCallback invokes the webplus.DescribeChanges API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describechanges.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeChangesWithCallback(request *DescribeChangesRequest, callback func(response *DescribeChangesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeChangesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeChanges(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeChangesRequest is the request struct for api DescribeChanges
+type DescribeChangesRequest struct {
+	*requests.RoaRequest
+	PageSize   requests.Integer `position:"Query" name:"PageSize"`
+	EnvId      string           `position:"Query" name:"EnvId"`
+	ActionName string           `position:"Query" name:"ActionName"`
+	PageNumber requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeChangesResponse is the response struct for api DescribeChanges
+type DescribeChangesResponse struct {
+	*responses.BaseResponse
+	RequestId  string  `json:"RequestId" xml:"RequestId"`
+	Code       string  `json:"Code" xml:"Code"`
+	Message    string  `json:"Message" xml:"Message"`
+	PageNumber int     `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int     `json:"PageSize" xml:"PageSize"`
+	TotalCount int     `json:"TotalCount" xml:"TotalCount"`
+	Changes    Changes `json:"Changes" xml:"Changes"`
+}
+
+// CreateDescribeChangesRequest creates a request to invoke DescribeChanges API
+func CreateDescribeChangesRequest() (request *DescribeChangesRequest) {
+	request = &DescribeChangesRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeChanges", "/pop/v1/wam/change", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeChangesResponse creates a response to parse from DescribeChanges response
+func CreateDescribeChangesResponse() (response *DescribeChangesResponse) {
+	response = &DescribeChangesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/webplus/describe_config_index.go

@@ -0,0 +1,111 @@
+package webplus
+
+//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"
+)
+
+// DescribeConfigIndex invokes the webplus.DescribeConfigIndex API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigindex.html
+func (client *Client) DescribeConfigIndex(request *DescribeConfigIndexRequest) (response *DescribeConfigIndexResponse, err error) {
+	response = CreateDescribeConfigIndexResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeConfigIndexWithChan invokes the webplus.DescribeConfigIndex API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigindex.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigIndexWithChan(request *DescribeConfigIndexRequest) (<-chan *DescribeConfigIndexResponse, <-chan error) {
+	responseChan := make(chan *DescribeConfigIndexResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeConfigIndex(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeConfigIndexWithCallback invokes the webplus.DescribeConfigIndex API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigindex.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigIndexWithCallback(request *DescribeConfigIndexRequest, callback func(response *DescribeConfigIndexResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeConfigIndexResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeConfigIndex(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeConfigIndexRequest is the request struct for api DescribeConfigIndex
+type DescribeConfigIndexRequest struct {
+	*requests.RoaRequest
+	StackId     string `position:"Query" name:"StackId"`
+	ProfileName string `position:"Query" name:"ProfileName"`
+	EnvId       string `position:"Query" name:"EnvId"`
+}
+
+// DescribeConfigIndexResponse is the response struct for api DescribeConfigIndex
+type DescribeConfigIndexResponse struct {
+	*responses.BaseResponse
+	RequestId    string       `json:"RequestId" xml:"RequestId"`
+	Code         string       `json:"Code" xml:"Code"`
+	Message      string       `json:"Message" xml:"Message"`
+	StackId      string       `json:"StackId" xml:"StackId"`
+	StackName    string       `json:"StackName" xml:"StackName"`
+	ConfigGroups ConfigGroups `json:"ConfigGroups" xml:"ConfigGroups"`
+}
+
+// CreateDescribeConfigIndexRequest creates a request to invoke DescribeConfigIndex API
+func CreateDescribeConfigIndexRequest() (request *DescribeConfigIndexRequest) {
+	request = &DescribeConfigIndexRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeConfigIndex", "/pop/v1/wam/config/configIndex", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeConfigIndexResponse creates a response to parse from DescribeConfigIndex response
+func CreateDescribeConfigIndexResponse() (response *DescribeConfigIndexResponse) {
+	response = &DescribeConfigIndexResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/webplus/describe_config_options.go

@@ -0,0 +1,109 @@
+package webplus
+
+//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"
+)
+
+// DescribeConfigOptions invokes the webplus.DescribeConfigOptions API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigoptions.html
+func (client *Client) DescribeConfigOptions(request *DescribeConfigOptionsRequest) (response *DescribeConfigOptionsResponse, err error) {
+	response = CreateDescribeConfigOptionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeConfigOptionsWithChan invokes the webplus.DescribeConfigOptions API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigoptions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigOptionsWithChan(request *DescribeConfigOptionsRequest) (<-chan *DescribeConfigOptionsResponse, <-chan error) {
+	responseChan := make(chan *DescribeConfigOptionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeConfigOptions(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeConfigOptionsWithCallback invokes the webplus.DescribeConfigOptions API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigoptions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigOptionsWithCallback(request *DescribeConfigOptionsRequest, callback func(response *DescribeConfigOptionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeConfigOptionsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeConfigOptions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeConfigOptionsRequest is the request struct for api DescribeConfigOptions
+type DescribeConfigOptionsRequest struct {
+	*requests.RoaRequest
+	StackId     string `position:"Query" name:"StackId"`
+	ProfileName string `position:"Query" name:"ProfileName"`
+	EnvId       string `position:"Query" name:"EnvId"`
+}
+
+// DescribeConfigOptionsResponse is the response struct for api DescribeConfigOptions
+type DescribeConfigOptionsResponse struct {
+	*responses.BaseResponse
+	RequestId         string            `json:"RequestId" xml:"RequestId"`
+	Code              string            `json:"Code" xml:"Code"`
+	Message           string            `json:"Message" xml:"Message"`
+	StackConfigOption StackConfigOption `json:"StackConfigOption" xml:"StackConfigOption"`
+}
+
+// CreateDescribeConfigOptionsRequest creates a request to invoke DescribeConfigOptions API
+func CreateDescribeConfigOptionsRequest() (request *DescribeConfigOptionsRequest) {
+	request = &DescribeConfigOptionsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeConfigOptions", "/pop/v1/wam/config/configOption", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeConfigOptionsResponse creates a response to parse from DescribeConfigOptions response
+func CreateDescribeConfigOptionsResponse() (response *DescribeConfigOptionsResponse) {
+	response = &DescribeConfigOptionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/webplus/describe_config_settings.go

@@ -0,0 +1,108 @@
+package webplus
+
+//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"
+)
+
+// DescribeConfigSettings invokes the webplus.DescribeConfigSettings API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigsettings.html
+func (client *Client) DescribeConfigSettings(request *DescribeConfigSettingsRequest) (response *DescribeConfigSettingsResponse, err error) {
+	response = CreateDescribeConfigSettingsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeConfigSettingsWithChan invokes the webplus.DescribeConfigSettings API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigsettings.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigSettingsWithChan(request *DescribeConfigSettingsRequest) (<-chan *DescribeConfigSettingsResponse, <-chan error) {
+	responseChan := make(chan *DescribeConfigSettingsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeConfigSettings(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeConfigSettingsWithCallback invokes the webplus.DescribeConfigSettings API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigsettings.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigSettingsWithCallback(request *DescribeConfigSettingsRequest, callback func(response *DescribeConfigSettingsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeConfigSettingsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeConfigSettings(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeConfigSettingsRequest is the request struct for api DescribeConfigSettings
+type DescribeConfigSettingsRequest struct {
+	*requests.RoaRequest
+	EnvId      string `position:"Query" name:"EnvId"`
+	TemplateId string `position:"Query" name:"TemplateId"`
+}
+
+// DescribeConfigSettingsResponse is the response struct for api DescribeConfigSettings
+type DescribeConfigSettingsResponse struct {
+	*responses.BaseResponse
+	RequestId      string         `json:"RequestId" xml:"RequestId"`
+	Code           string         `json:"Code" xml:"Code"`
+	Message        string         `json:"Message" xml:"Message"`
+	ConfigSettings ConfigSettings `json:"ConfigSettings" xml:"ConfigSettings"`
+}
+
+// CreateDescribeConfigSettingsRequest creates a request to invoke DescribeConfigSettings API
+func CreateDescribeConfigSettingsRequest() (request *DescribeConfigSettingsRequest) {
+	request = &DescribeConfigSettingsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeConfigSettings", "/pop/v1/wam/config/configSetting", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeConfigSettingsResponse creates a response to parse from DescribeConfigSettings response
+func CreateDescribeConfigSettingsResponse() (response *DescribeConfigSettingsResponse) {
+	response = &DescribeConfigSettingsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/webplus/describe_config_templates.go

@@ -0,0 +1,114 @@
+package webplus
+
+//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"
+)
+
+// DescribeConfigTemplates invokes the webplus.DescribeConfigTemplates API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigtemplates.html
+func (client *Client) DescribeConfigTemplates(request *DescribeConfigTemplatesRequest) (response *DescribeConfigTemplatesResponse, err error) {
+	response = CreateDescribeConfigTemplatesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeConfigTemplatesWithChan invokes the webplus.DescribeConfigTemplates API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigtemplates.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigTemplatesWithChan(request *DescribeConfigTemplatesRequest) (<-chan *DescribeConfigTemplatesResponse, <-chan error) {
+	responseChan := make(chan *DescribeConfigTemplatesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeConfigTemplates(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeConfigTemplatesWithCallback invokes the webplus.DescribeConfigTemplates API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeconfigtemplates.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeConfigTemplatesWithCallback(request *DescribeConfigTemplatesRequest, callback func(response *DescribeConfigTemplatesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeConfigTemplatesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeConfigTemplates(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeConfigTemplatesRequest is the request struct for api DescribeConfigTemplates
+type DescribeConfigTemplatesRequest struct {
+	*requests.RoaRequest
+	TemplateSearch string           `position:"Query" name:"TemplateSearch"`
+	AppId          string           `position:"Query" name:"AppId"`
+	PageSize       requests.Integer `position:"Query" name:"PageSize"`
+	TemplateName   string           `position:"Query" name:"TemplateName"`
+	PageNumber     requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeConfigTemplatesResponse is the response struct for api DescribeConfigTemplates
+type DescribeConfigTemplatesResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	Code            string          `json:"Code" xml:"Code"`
+	Message         string          `json:"Message" xml:"Message"`
+	PageNumber      int             `json:"PageNumber" xml:"PageNumber"`
+	PageSize        int             `json:"PageSize" xml:"PageSize"`
+	TotalCount      int             `json:"TotalCount" xml:"TotalCount"`
+	ConfigTemplates ConfigTemplates `json:"ConfigTemplates" xml:"ConfigTemplates"`
+}
+
+// CreateDescribeConfigTemplatesRequest creates a request to invoke DescribeConfigTemplates API
+func CreateDescribeConfigTemplatesRequest() (request *DescribeConfigTemplatesRequest) {
+	request = &DescribeConfigTemplatesRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeConfigTemplates", "/pop/v1/wam/configTemplate", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeConfigTemplatesResponse creates a response to parse from DescribeConfigTemplates response
+func CreateDescribeConfigTemplatesResponse() (response *DescribeConfigTemplatesResponse) {
+	response = &DescribeConfigTemplatesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/describe_env_resource.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DescribeEnvResource invokes the webplus.DescribeEnvResource API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeenvresource.html
+func (client *Client) DescribeEnvResource(request *DescribeEnvResourceRequest) (response *DescribeEnvResourceResponse, err error) {
+	response = CreateDescribeEnvResourceResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEnvResourceWithChan invokes the webplus.DescribeEnvResource API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeenvresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEnvResourceWithChan(request *DescribeEnvResourceRequest) (<-chan *DescribeEnvResourceResponse, <-chan error) {
+	responseChan := make(chan *DescribeEnvResourceResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEnvResource(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEnvResourceWithCallback invokes the webplus.DescribeEnvResource API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeenvresource.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEnvResourceWithCallback(request *DescribeEnvResourceRequest, callback func(response *DescribeEnvResourceResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEnvResourceResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEnvResource(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEnvResourceRequest is the request struct for api DescribeEnvResource
+type DescribeEnvResourceRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Query" name:"EnvId"`
+}
+
+// DescribeEnvResourceResponse is the response struct for api DescribeEnvResource
+type DescribeEnvResourceResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	Code        string      `json:"Code" xml:"Code"`
+	Message     string      `json:"Message" xml:"Message"`
+	EnvResource EnvResource `json:"EnvResource" xml:"EnvResource"`
+}
+
+// CreateDescribeEnvResourceRequest creates a request to invoke DescribeEnvResource API
+func CreateDescribeEnvResourceRequest() (request *DescribeEnvResourceRequest) {
+	request = &DescribeEnvResourceRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeEnvResource", "/pop/v1/wam/envResource", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeEnvResourceResponse creates a response to parse from DescribeEnvResource response
+func CreateDescribeEnvResourceResponse() (response *DescribeEnvResourceResponse) {
+	response = &DescribeEnvResourceResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/webplus/describe_events.go

@@ -0,0 +1,117 @@
+package webplus
+
+//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"
+)
+
+// DescribeEvents invokes the webplus.DescribeEvents API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeevents.html
+func (client *Client) DescribeEvents(request *DescribeEventsRequest) (response *DescribeEventsResponse, err error) {
+	response = CreateDescribeEventsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeEventsWithChan invokes the webplus.DescribeEvents API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeevents.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEventsWithChan(request *DescribeEventsRequest) (<-chan *DescribeEventsResponse, <-chan error) {
+	responseChan := make(chan *DescribeEventsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeEvents(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeEventsWithCallback invokes the webplus.DescribeEvents API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeevents.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeEventsWithCallback(request *DescribeEventsRequest, callback func(response *DescribeEventsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeEventsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeEvents(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeEventsRequest is the request struct for api DescribeEvents
+type DescribeEventsRequest struct {
+	*requests.RoaRequest
+	LastChangeEvents   requests.Boolean `position:"Query" name:"LastChangeEvents"`
+	ReverseByTimestamp requests.Boolean `position:"Query" name:"ReverseByTimestamp"`
+	PageSize           requests.Integer `position:"Query" name:"PageSize"`
+	EndTime            requests.Integer `position:"Query" name:"EndTime"`
+	EnvId              string           `position:"Query" name:"EnvId"`
+	StartTime          requests.Integer `position:"Query" name:"StartTime"`
+	ChangeId           string           `position:"Query" name:"ChangeId"`
+	PageNumber         requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeEventsResponse is the response struct for api DescribeEvents
+type DescribeEventsResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	Code       string `json:"Code" xml:"Code"`
+	Message    string `json:"Message" xml:"Message"`
+	PageNumber int    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int    `json:"PageSize" xml:"PageSize"`
+	TotalCount int    `json:"TotalCount" xml:"TotalCount"`
+	Events     Events `json:"Events" xml:"Events"`
+}
+
+// CreateDescribeEventsRequest creates a request to invoke DescribeEvents API
+func CreateDescribeEventsRequest() (request *DescribeEventsRequest) {
+	request = &DescribeEventsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeEvents", "/pop/v1/wam/event", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeEventsResponse creates a response to parse from DescribeEvents response
+func CreateDescribeEventsResponse() (response *DescribeEventsResponse) {
+	response = &DescribeEventsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/describe_gather_log_result.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DescribeGatherLogResult invokes the webplus.DescribeGatherLogResult API synchronously
+// api document: https://help.aliyun.com/api/webplus/describegatherlogresult.html
+func (client *Client) DescribeGatherLogResult(request *DescribeGatherLogResultRequest) (response *DescribeGatherLogResultResponse, err error) {
+	response = CreateDescribeGatherLogResultResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeGatherLogResultWithChan invokes the webplus.DescribeGatherLogResult API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describegatherlogresult.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeGatherLogResultWithChan(request *DescribeGatherLogResultRequest) (<-chan *DescribeGatherLogResultResponse, <-chan error) {
+	responseChan := make(chan *DescribeGatherLogResultResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeGatherLogResult(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeGatherLogResultWithCallback invokes the webplus.DescribeGatherLogResult API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describegatherlogresult.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeGatherLogResultWithCallback(request *DescribeGatherLogResultRequest, callback func(response *DescribeGatherLogResultResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeGatherLogResultResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeGatherLogResult(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeGatherLogResultRequest is the request struct for api DescribeGatherLogResult
+type DescribeGatherLogResultRequest struct {
+	*requests.RoaRequest
+	ChangeId string `position:"Query" name:"ChangeId"`
+}
+
+// DescribeGatherLogResultResponse is the response struct for api DescribeGatherLogResult
+type DescribeGatherLogResultResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	Code            string          `json:"Code" xml:"Code"`
+	Message         string          `json:"Message" xml:"Message"`
+	GatherLogResult GatherLogResult `json:"GatherLogResult" xml:"GatherLogResult"`
+}
+
+// CreateDescribeGatherLogResultRequest creates a request to invoke DescribeGatherLogResult API
+func CreateDescribeGatherLogResultRequest() (request *DescribeGatherLogResultRequest) {
+	request = &DescribeGatherLogResultRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeGatherLogResult", "/pop/v1/wam/appEnv/gatherLog", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeGatherLogResultResponse creates a response to parse from DescribeGatherLogResult response
+func CreateDescribeGatherLogResultResponse() (response *DescribeGatherLogResultResponse) {
+	response = &DescribeGatherLogResultResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/describe_gather_stats_result.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DescribeGatherStatsResult invokes the webplus.DescribeGatherStatsResult API synchronously
+// api document: https://help.aliyun.com/api/webplus/describegatherstatsresult.html
+func (client *Client) DescribeGatherStatsResult(request *DescribeGatherStatsResultRequest) (response *DescribeGatherStatsResultResponse, err error) {
+	response = CreateDescribeGatherStatsResultResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeGatherStatsResultWithChan invokes the webplus.DescribeGatherStatsResult API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describegatherstatsresult.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeGatherStatsResultWithChan(request *DescribeGatherStatsResultRequest) (<-chan *DescribeGatherStatsResultResponse, <-chan error) {
+	responseChan := make(chan *DescribeGatherStatsResultResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeGatherStatsResult(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeGatherStatsResultWithCallback invokes the webplus.DescribeGatherStatsResult API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describegatherstatsresult.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeGatherStatsResultWithCallback(request *DescribeGatherStatsResultRequest, callback func(response *DescribeGatherStatsResultResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeGatherStatsResultResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeGatherStatsResult(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeGatherStatsResultRequest is the request struct for api DescribeGatherStatsResult
+type DescribeGatherStatsResultRequest struct {
+	*requests.RoaRequest
+	ChangeId string `position:"Query" name:"ChangeId"`
+}
+
+// DescribeGatherStatsResultResponse is the response struct for api DescribeGatherStatsResult
+type DescribeGatherStatsResultResponse struct {
+	*responses.BaseResponse
+	RequestId         string            `json:"RequestId" xml:"RequestId"`
+	Code              string            `json:"Code" xml:"Code"`
+	Message           string            `json:"Message" xml:"Message"`
+	GatherStatsResult GatherStatsResult `json:"GatherStatsResult" xml:"GatherStatsResult"`
+}
+
+// CreateDescribeGatherStatsResultRequest creates a request to invoke DescribeGatherStatsResult API
+func CreateDescribeGatherStatsResultRequest() (request *DescribeGatherStatsResultRequest) {
+	request = &DescribeGatherStatsResultRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeGatherStatsResult", "/pop/v1/wam/appEnv/gatherStats", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeGatherStatsResultResponse creates a response to parse from DescribeGatherStatsResult response
+func CreateDescribeGatherStatsResultResponse() (response *DescribeGatherStatsResultResponse) {
+	response = &DescribeGatherStatsResultResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/describe_instance_health.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DescribeInstanceHealth invokes the webplus.DescribeInstanceHealth API synchronously
+// api document: https://help.aliyun.com/api/webplus/describeinstancehealth.html
+func (client *Client) DescribeInstanceHealth(request *DescribeInstanceHealthRequest) (response *DescribeInstanceHealthResponse, err error) {
+	response = CreateDescribeInstanceHealthResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeInstanceHealthWithChan invokes the webplus.DescribeInstanceHealth API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeinstancehealth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceHealthWithChan(request *DescribeInstanceHealthRequest) (<-chan *DescribeInstanceHealthResponse, <-chan error) {
+	responseChan := make(chan *DescribeInstanceHealthResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeInstanceHealth(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeInstanceHealthWithCallback invokes the webplus.DescribeInstanceHealth API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describeinstancehealth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeInstanceHealthWithCallback(request *DescribeInstanceHealthRequest, callback func(response *DescribeInstanceHealthResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeInstanceHealthResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeInstanceHealth(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeInstanceHealthRequest is the request struct for api DescribeInstanceHealth
+type DescribeInstanceHealthRequest struct {
+	*requests.RoaRequest
+	InstanceId string `position:"Query" name:"InstanceId"`
+}
+
+// DescribeInstanceHealthResponse is the response struct for api DescribeInstanceHealth
+type DescribeInstanceHealthResponse struct {
+	*responses.BaseResponse
+	RequestId      string                                 `json:"RequestId" xml:"RequestId"`
+	Code           string                                 `json:"Code" xml:"Code"`
+	Message        string                                 `json:"Message" xml:"Message"`
+	InstanceHealth InstanceHealthInDescribeInstanceHealth `json:"InstanceHealth" xml:"InstanceHealth"`
+}
+
+// CreateDescribeInstanceHealthRequest creates a request to invoke DescribeInstanceHealth API
+func CreateDescribeInstanceHealthRequest() (request *DescribeInstanceHealthRequest) {
+	request = &DescribeInstanceHealthRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeInstanceHealth", "/pop/v1/wam/instance/health", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeInstanceHealthResponse creates a response to parse from DescribeInstanceHealth response
+func CreateDescribeInstanceHealthResponse() (response *DescribeInstanceHealthResponse) {
+	response = &DescribeInstanceHealthResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/webplus/describe_pkg_versions.go

@@ -0,0 +1,114 @@
+package webplus
+
+//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"
+)
+
+// DescribePkgVersions invokes the webplus.DescribePkgVersions API synchronously
+// api document: https://help.aliyun.com/api/webplus/describepkgversions.html
+func (client *Client) DescribePkgVersions(request *DescribePkgVersionsRequest) (response *DescribePkgVersionsResponse, err error) {
+	response = CreateDescribePkgVersionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePkgVersionsWithChan invokes the webplus.DescribePkgVersions API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describepkgversions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePkgVersionsWithChan(request *DescribePkgVersionsRequest) (<-chan *DescribePkgVersionsResponse, <-chan error) {
+	responseChan := make(chan *DescribePkgVersionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePkgVersions(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePkgVersionsWithCallback invokes the webplus.DescribePkgVersions API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describepkgversions.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePkgVersionsWithCallback(request *DescribePkgVersionsRequest, callback func(response *DescribePkgVersionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePkgVersionsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePkgVersions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePkgVersionsRequest is the request struct for api DescribePkgVersions
+type DescribePkgVersionsRequest struct {
+	*requests.RoaRequest
+	PkgVersionLabel  string           `position:"Query" name:"PkgVersionLabel"`
+	AppId            string           `position:"Query" name:"AppId"`
+	PageSize         requests.Integer `position:"Query" name:"PageSize"`
+	PkgVersionSearch string           `position:"Query" name:"PkgVersionSearch"`
+	PageNumber       requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribePkgVersionsResponse is the response struct for api DescribePkgVersions
+type DescribePkgVersionsResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	Code        string      `json:"Code" xml:"Code"`
+	Message     string      `json:"Message" xml:"Message"`
+	PageNumber  int         `json:"PageNumber" xml:"PageNumber"`
+	PageSize    int         `json:"PageSize" xml:"PageSize"`
+	TotalCount  int         `json:"TotalCount" xml:"TotalCount"`
+	PkgVersions PkgVersions `json:"PkgVersions" xml:"PkgVersions"`
+}
+
+// CreateDescribePkgVersionsRequest creates a request to invoke DescribePkgVersions API
+func CreateDescribePkgVersionsRequest() (request *DescribePkgVersionsRequest) {
+	request = &DescribePkgVersionsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribePkgVersions", "/pop/v1/wam/pkgVersion", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribePkgVersionsResponse creates a response to parse from DescribePkgVersions response
+func CreateDescribePkgVersionsResponse() (response *DescribePkgVersionsResponse) {
+	response = &DescribePkgVersionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/webplus/describe_stacks.go

@@ -0,0 +1,113 @@
+package webplus
+
+//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"
+)
+
+// DescribeStacks invokes the webplus.DescribeStacks API synchronously
+// api document: https://help.aliyun.com/api/webplus/describestacks.html
+func (client *Client) DescribeStacks(request *DescribeStacksRequest) (response *DescribeStacksResponse, err error) {
+	response = CreateDescribeStacksResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeStacksWithChan invokes the webplus.DescribeStacks API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describestacks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeStacksWithChan(request *DescribeStacksRequest) (<-chan *DescribeStacksResponse, <-chan error) {
+	responseChan := make(chan *DescribeStacksResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeStacks(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeStacksWithCallback invokes the webplus.DescribeStacks API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describestacks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeStacksWithCallback(request *DescribeStacksRequest, callback func(response *DescribeStacksResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeStacksResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeStacks(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeStacksRequest is the request struct for api DescribeStacks
+type DescribeStacksRequest struct {
+	*requests.RoaRequest
+	PageSize        requests.Integer `position:"Query" name:"PageSize"`
+	CategoryName    string           `position:"Query" name:"CategoryName"`
+	RecommendedOnly requests.Boolean `position:"Query" name:"RecommendedOnly"`
+	PageNumber      requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeStacksResponse is the response struct for api DescribeStacks
+type DescribeStacksResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	Code       string `json:"Code" xml:"Code"`
+	Message    string `json:"Message" xml:"Message"`
+	PageNumber int    `json:"PageNumber" xml:"PageNumber"`
+	PageSize   int    `json:"PageSize" xml:"PageSize"`
+	TotalCount int    `json:"TotalCount" xml:"TotalCount"`
+	Stacks     Stacks `json:"Stacks" xml:"Stacks"`
+}
+
+// CreateDescribeStacksRequest creates a request to invoke DescribeStacks API
+func CreateDescribeStacksRequest() (request *DescribeStacksRequest) {
+	request = &DescribeStacksRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeStacks", "/pop/v1/wam/stack", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeStacksResponse creates a response to parse from DescribeStacks response
+func CreateDescribeStacksResponse() (response *DescribeStacksResponse) {
+	response = &DescribeStacksResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/webplus/describe_storage.go

@@ -0,0 +1,106 @@
+package webplus
+
+//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"
+)
+
+// DescribeStorage invokes the webplus.DescribeStorage API synchronously
+// api document: https://help.aliyun.com/api/webplus/describestorage.html
+func (client *Client) DescribeStorage(request *DescribeStorageRequest) (response *DescribeStorageResponse, err error) {
+	response = CreateDescribeStorageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeStorageWithChan invokes the webplus.DescribeStorage API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describestorage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeStorageWithChan(request *DescribeStorageRequest) (<-chan *DescribeStorageResponse, <-chan error) {
+	responseChan := make(chan *DescribeStorageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeStorage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeStorageWithCallback invokes the webplus.DescribeStorage API asynchronously
+// api document: https://help.aliyun.com/api/webplus/describestorage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeStorageWithCallback(request *DescribeStorageRequest, callback func(response *DescribeStorageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeStorageResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeStorage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeStorageRequest is the request struct for api DescribeStorage
+type DescribeStorageRequest struct {
+	*requests.RoaRequest
+}
+
+// DescribeStorageResponse is the response struct for api DescribeStorage
+type DescribeStorageResponse struct {
+	*responses.BaseResponse
+	RequestId string  `json:"RequestId" xml:"RequestId"`
+	Code      string  `json:"Code" xml:"Code"`
+	Message   string  `json:"Message" xml:"Message"`
+	Storage   Storage `json:"Storage" xml:"Storage"`
+}
+
+// CreateDescribeStorageRequest creates a request to invoke DescribeStorage API
+func CreateDescribeStorageRequest() (request *DescribeStorageRequest) {
+	request = &DescribeStorageRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DescribeStorage", "/pop/v1/wam/storage", "webx", "openAPI")
+	request.Method = requests.GET
+	return
+}
+
+// CreateDescribeStorageResponse creates a response to parse from DescribeStorage response
+func CreateDescribeStorageResponse() (response *DescribeStorageResponse) {
+	response = &DescribeStorageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/webplus/dry_run_create_app_env.go

@@ -0,0 +1,111 @@
+package webplus
+
+//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"
+)
+
+// DryRunCreateAppEnv invokes the webplus.DryRunCreateAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/dryruncreateappenv.html
+func (client *Client) DryRunCreateAppEnv(request *DryRunCreateAppEnvRequest) (response *DryRunCreateAppEnvResponse, err error) {
+	response = CreateDryRunCreateAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DryRunCreateAppEnvWithChan invokes the webplus.DryRunCreateAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/dryruncreateappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DryRunCreateAppEnvWithChan(request *DryRunCreateAppEnvRequest) (<-chan *DryRunCreateAppEnvResponse, <-chan error) {
+	responseChan := make(chan *DryRunCreateAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DryRunCreateAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DryRunCreateAppEnvWithCallback invokes the webplus.DryRunCreateAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/dryruncreateappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DryRunCreateAppEnvWithCallback(request *DryRunCreateAppEnvRequest, callback func(response *DryRunCreateAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DryRunCreateAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.DryRunCreateAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DryRunCreateAppEnvRequest is the request struct for api DryRunCreateAppEnv
+type DryRunCreateAppEnvRequest struct {
+	*requests.RoaRequest
+	OptionSettings string `position:"Body" name:"OptionSettings"`
+	StackId        string `position:"Body" name:"StackId"`
+	ProfileName    string `position:"Body" name:"ProfileName"`
+	SourceEnvId    string `position:"Body" name:"SourceEnvId"`
+	TemplateId     string `position:"Body" name:"TemplateId"`
+}
+
+// DryRunCreateAppEnvResponse is the response struct for api DryRunCreateAppEnv
+type DryRunCreateAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Code       string     `json:"Code" xml:"Code"`
+	Message    string     `json:"Message" xml:"Message"`
+	DryRunInfo DryRunInfo `json:"DryRunInfo" xml:"DryRunInfo"`
+}
+
+// CreateDryRunCreateAppEnvRequest creates a request to invoke DryRunCreateAppEnv API
+func CreateDryRunCreateAppEnvRequest() (request *DryRunCreateAppEnvRequest) {
+	request = &DryRunCreateAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DryRunCreateAppEnv", "/pop/v1/wam/appEnv/dryRunCreate", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateDryRunCreateAppEnvResponse creates a response to parse from DryRunCreateAppEnv response
+func CreateDryRunCreateAppEnvResponse() (response *DryRunCreateAppEnvResponse) {
+	response = &DryRunCreateAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/dry_run_rebuild_app_env.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DryRunRebuildAppEnv invokes the webplus.DryRunRebuildAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/dryrunrebuildappenv.html
+func (client *Client) DryRunRebuildAppEnv(request *DryRunRebuildAppEnvRequest) (response *DryRunRebuildAppEnvResponse, err error) {
+	response = CreateDryRunRebuildAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DryRunRebuildAppEnvWithChan invokes the webplus.DryRunRebuildAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/dryrunrebuildappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DryRunRebuildAppEnvWithChan(request *DryRunRebuildAppEnvRequest) (<-chan *DryRunRebuildAppEnvResponse, <-chan error) {
+	responseChan := make(chan *DryRunRebuildAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DryRunRebuildAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DryRunRebuildAppEnvWithCallback invokes the webplus.DryRunRebuildAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/dryrunrebuildappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DryRunRebuildAppEnvWithCallback(request *DryRunRebuildAppEnvRequest, callback func(response *DryRunRebuildAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DryRunRebuildAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.DryRunRebuildAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DryRunRebuildAppEnvRequest is the request struct for api DryRunRebuildAppEnv
+type DryRunRebuildAppEnvRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Body" name:"EnvId"`
+}
+
+// DryRunRebuildAppEnvResponse is the response struct for api DryRunRebuildAppEnv
+type DryRunRebuildAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Code       string     `json:"Code" xml:"Code"`
+	Message    string     `json:"Message" xml:"Message"`
+	DryRunInfo DryRunInfo `json:"DryRunInfo" xml:"DryRunInfo"`
+}
+
+// CreateDryRunRebuildAppEnvRequest creates a request to invoke DryRunRebuildAppEnv API
+func CreateDryRunRebuildAppEnvRequest() (request *DryRunRebuildAppEnvRequest) {
+	request = &DryRunRebuildAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DryRunRebuildAppEnv", "/pop/v1/wam/appEnv/dryRunRebuild", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateDryRunRebuildAppEnvResponse creates a response to parse from DryRunRebuildAppEnv response
+func CreateDryRunRebuildAppEnvResponse() (response *DryRunRebuildAppEnvResponse) {
+	response = &DryRunRebuildAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/dry_run_terminate_app_env.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// DryRunTerminateAppEnv invokes the webplus.DryRunTerminateAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/dryrunterminateappenv.html
+func (client *Client) DryRunTerminateAppEnv(request *DryRunTerminateAppEnvRequest) (response *DryRunTerminateAppEnvResponse, err error) {
+	response = CreateDryRunTerminateAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DryRunTerminateAppEnvWithChan invokes the webplus.DryRunTerminateAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/dryrunterminateappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DryRunTerminateAppEnvWithChan(request *DryRunTerminateAppEnvRequest) (<-chan *DryRunTerminateAppEnvResponse, <-chan error) {
+	responseChan := make(chan *DryRunTerminateAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DryRunTerminateAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DryRunTerminateAppEnvWithCallback invokes the webplus.DryRunTerminateAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/dryrunterminateappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DryRunTerminateAppEnvWithCallback(request *DryRunTerminateAppEnvRequest, callback func(response *DryRunTerminateAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DryRunTerminateAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.DryRunTerminateAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DryRunTerminateAppEnvRequest is the request struct for api DryRunTerminateAppEnv
+type DryRunTerminateAppEnvRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Body" name:"EnvId"`
+}
+
+// DryRunTerminateAppEnvResponse is the response struct for api DryRunTerminateAppEnv
+type DryRunTerminateAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	Code       string     `json:"Code" xml:"Code"`
+	Message    string     `json:"Message" xml:"Message"`
+	DryRunInfo DryRunInfo `json:"DryRunInfo" xml:"DryRunInfo"`
+}
+
+// CreateDryRunTerminateAppEnvRequest creates a request to invoke DryRunTerminateAppEnv API
+func CreateDryRunTerminateAppEnvRequest() (request *DryRunTerminateAppEnvRequest) {
+	request = &DryRunTerminateAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "DryRunTerminateAppEnv", "/pop/v1/wam/appEnv/dryRunTerminate", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateDryRunTerminateAppEnvResponse creates a response to parse from DryRunTerminateAppEnv response
+func CreateDryRunTerminateAppEnvResponse() (response *DryRunTerminateAppEnvResponse) {
+	response = &DryRunTerminateAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 40 - 0
services/webplus/endpoint.go

@@ -0,0 +1,40 @@
+package webplus
+
+// 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{
+			"cn-shenzhen":    "webplus.cn-hangzhou.aliyuncs.com",
+			"cn-beijing":     "webplus.cn-hangzhou.aliyuncs.com",
+			"ap-south-1":     "webplus.aliyuncs.com",
+			"eu-west-1":      "webplus.aliyuncs.com",
+			"ap-northeast-1": "webplus.aliyuncs.com",
+			"me-east-1":      "webplus.aliyuncs.com",
+			"cn-chengdu":     "webplus.aliyuncs.com",
+			"cn-qingdao":     "webplus.aliyuncs.com",
+			"cn-shanghai":    "webplus.cn-hangzhou.aliyuncs.com",
+			"cn-hongkong":    "webplus.aliyuncs.com",
+			"ap-southeast-1": "webplus.aliyuncs.com",
+			"ap-southeast-2": "webplus.aliyuncs.com",
+			"ap-southeast-3": "webplus.aliyuncs.com",
+			"eu-central-1":   "webplus.aliyuncs.com",
+			"cn-huhehaote":   "webplus.aliyuncs.com",
+			"ap-southeast-5": "webplus.aliyuncs.com",
+			"us-east-1":      "webplus.aliyuncs.com",
+			"cn-zhangjiakou": "webplus.cn-hangzhou.aliyuncs.com",
+			"us-west-1":      "webplus.aliyuncs.com",
+		}
+	}
+	return EndpointMap
+}
+
+// GetEndpointType Get Endpoint Type Value
+func GetEndpointType() string {
+	return EndpointType
+}

+ 109 - 0
services/webplus/gather_app_env_log.go

@@ -0,0 +1,109 @@
+package webplus
+
+//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"
+)
+
+// GatherAppEnvLog invokes the webplus.GatherAppEnvLog API synchronously
+// api document: https://help.aliyun.com/api/webplus/gatherappenvlog.html
+func (client *Client) GatherAppEnvLog(request *GatherAppEnvLogRequest) (response *GatherAppEnvLogResponse, err error) {
+	response = CreateGatherAppEnvLogResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GatherAppEnvLogWithChan invokes the webplus.GatherAppEnvLog API asynchronously
+// api document: https://help.aliyun.com/api/webplus/gatherappenvlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GatherAppEnvLogWithChan(request *GatherAppEnvLogRequest) (<-chan *GatherAppEnvLogResponse, <-chan error) {
+	responseChan := make(chan *GatherAppEnvLogResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GatherAppEnvLog(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GatherAppEnvLogWithCallback invokes the webplus.GatherAppEnvLog API asynchronously
+// api document: https://help.aliyun.com/api/webplus/gatherappenvlog.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GatherAppEnvLogWithCallback(request *GatherAppEnvLogRequest, callback func(response *GatherAppEnvLogResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GatherAppEnvLogResponse
+		var err error
+		defer close(result)
+		response, err = client.GatherAppEnvLog(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GatherAppEnvLogRequest is the request struct for api GatherAppEnvLog
+type GatherAppEnvLogRequest struct {
+	*requests.RoaRequest
+	LogPath         string `position:"Body" name:"LogPath"`
+	TargetInstances string `position:"Body" name:"TargetInstances"`
+	EnvId           string `position:"Body" name:"EnvId"`
+}
+
+// GatherAppEnvLogResponse is the response struct for api GatherAppEnvLog
+type GatherAppEnvLogResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateGatherAppEnvLogRequest creates a request to invoke GatherAppEnvLog API
+func CreateGatherAppEnvLogRequest() (request *GatherAppEnvLogRequest) {
+	request = &GatherAppEnvLogRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "GatherAppEnvLog", "/pop/v1/wam/appEnv/gatherLog", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateGatherAppEnvLogResponse creates a response to parse from GatherAppEnvLog response
+func CreateGatherAppEnvLogResponse() (response *GatherAppEnvLogResponse) {
+	response = &GatherAppEnvLogResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/webplus/gather_app_env_stats.go

@@ -0,0 +1,108 @@
+package webplus
+
+//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"
+)
+
+// GatherAppEnvStats invokes the webplus.GatherAppEnvStats API synchronously
+// api document: https://help.aliyun.com/api/webplus/gatherappenvstats.html
+func (client *Client) GatherAppEnvStats(request *GatherAppEnvStatsRequest) (response *GatherAppEnvStatsResponse, err error) {
+	response = CreateGatherAppEnvStatsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GatherAppEnvStatsWithChan invokes the webplus.GatherAppEnvStats API asynchronously
+// api document: https://help.aliyun.com/api/webplus/gatherappenvstats.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GatherAppEnvStatsWithChan(request *GatherAppEnvStatsRequest) (<-chan *GatherAppEnvStatsResponse, <-chan error) {
+	responseChan := make(chan *GatherAppEnvStatsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GatherAppEnvStats(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GatherAppEnvStatsWithCallback invokes the webplus.GatherAppEnvStats API asynchronously
+// api document: https://help.aliyun.com/api/webplus/gatherappenvstats.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GatherAppEnvStatsWithCallback(request *GatherAppEnvStatsRequest, callback func(response *GatherAppEnvStatsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GatherAppEnvStatsResponse
+		var err error
+		defer close(result)
+		response, err = client.GatherAppEnvStats(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GatherAppEnvStatsRequest is the request struct for api GatherAppEnvStats
+type GatherAppEnvStatsRequest struct {
+	*requests.RoaRequest
+	TargetInstances string `position:"Body" name:"TargetInstances"`
+	EnvId           string `position:"Body" name:"EnvId"`
+}
+
+// GatherAppEnvStatsResponse is the response struct for api GatherAppEnvStats
+type GatherAppEnvStatsResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateGatherAppEnvStatsRequest creates a request to invoke GatherAppEnvStats API
+func CreateGatherAppEnvStatsRequest() (request *GatherAppEnvStatsRequest) {
+	request = &GatherAppEnvStatsRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "GatherAppEnvStats", "/pop/v1/wam/appEnv/gatherStats", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateGatherAppEnvStatsResponse creates a response to parse from GatherAppEnvStats response
+func CreateGatherAppEnvStatsResponse() (response *GatherAppEnvStatsResponse) {
+	response = &GatherAppEnvStatsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/pause_change.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// PauseChange invokes the webplus.PauseChange API synchronously
+// api document: https://help.aliyun.com/api/webplus/pausechange.html
+func (client *Client) PauseChange(request *PauseChangeRequest) (response *PauseChangeResponse, err error) {
+	response = CreatePauseChangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// PauseChangeWithChan invokes the webplus.PauseChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/pausechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PauseChangeWithChan(request *PauseChangeRequest) (<-chan *PauseChangeResponse, <-chan error) {
+	responseChan := make(chan *PauseChangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.PauseChange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// PauseChangeWithCallback invokes the webplus.PauseChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/pausechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PauseChangeWithCallback(request *PauseChangeRequest, callback func(response *PauseChangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *PauseChangeResponse
+		var err error
+		defer close(result)
+		response, err = client.PauseChange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// PauseChangeRequest is the request struct for api PauseChange
+type PauseChangeRequest struct {
+	*requests.RoaRequest
+	ChangeId string `position:"Body" name:"ChangeId"`
+}
+
+// PauseChangeResponse is the response struct for api PauseChange
+type PauseChangeResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreatePauseChangeRequest creates a request to invoke PauseChange API
+func CreatePauseChangeRequest() (request *PauseChangeRequest) {
+	request = &PauseChangeRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "PauseChange", "/pop/v1/wam/change/pause", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreatePauseChangeResponse creates a response to parse from PauseChange response
+func CreatePauseChangeResponse() (response *PauseChangeResponse) {
+	response = &PauseChangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/webplus/rebuild_app_env.go

@@ -0,0 +1,108 @@
+package webplus
+
+//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"
+)
+
+// RebuildAppEnv invokes the webplus.RebuildAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/rebuildappenv.html
+func (client *Client) RebuildAppEnv(request *RebuildAppEnvRequest) (response *RebuildAppEnvResponse, err error) {
+	response = CreateRebuildAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RebuildAppEnvWithChan invokes the webplus.RebuildAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/rebuildappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RebuildAppEnvWithChan(request *RebuildAppEnvRequest) (<-chan *RebuildAppEnvResponse, <-chan error) {
+	responseChan := make(chan *RebuildAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RebuildAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RebuildAppEnvWithCallback invokes the webplus.RebuildAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/rebuildappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RebuildAppEnvWithCallback(request *RebuildAppEnvRequest, callback func(response *RebuildAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RebuildAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.RebuildAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RebuildAppEnvRequest is the request struct for api RebuildAppEnv
+type RebuildAppEnvRequest struct {
+	*requests.RoaRequest
+	DryRun requests.Boolean `position:"Body" name:"DryRun"`
+	EnvId  string           `position:"Body" name:"EnvId"`
+}
+
+// RebuildAppEnvResponse is the response struct for api RebuildAppEnv
+type RebuildAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	Code            string          `json:"Code" xml:"Code"`
+	Message         string          `json:"Message" xml:"Message"`
+	EnvChangeDetail EnvChangeDetail `json:"EnvChangeDetail" xml:"EnvChangeDetail"`
+}
+
+// CreateRebuildAppEnvRequest creates a request to invoke RebuildAppEnv API
+func CreateRebuildAppEnvRequest() (request *RebuildAppEnvRequest) {
+	request = &RebuildAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "RebuildAppEnv", "/pop/v1/wam/appEnv/rebuild", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateRebuildAppEnvResponse creates a response to parse from RebuildAppEnv response
+func CreateRebuildAppEnvResponse() (response *RebuildAppEnvResponse) {
+	response = &RebuildAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/restart_app_env.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// RestartAppEnv invokes the webplus.RestartAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/restartappenv.html
+func (client *Client) RestartAppEnv(request *RestartAppEnvRequest) (response *RestartAppEnvResponse, err error) {
+	response = CreateRestartAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// RestartAppEnvWithChan invokes the webplus.RestartAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/restartappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RestartAppEnvWithChan(request *RestartAppEnvRequest) (<-chan *RestartAppEnvResponse, <-chan error) {
+	responseChan := make(chan *RestartAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RestartAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// RestartAppEnvWithCallback invokes the webplus.RestartAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/restartappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) RestartAppEnvWithCallback(request *RestartAppEnvRequest, callback func(response *RestartAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RestartAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.RestartAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// RestartAppEnvRequest is the request struct for api RestartAppEnv
+type RestartAppEnvRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Body" name:"EnvId"`
+}
+
+// RestartAppEnvResponse is the response struct for api RestartAppEnv
+type RestartAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateRestartAppEnvRequest creates a request to invoke RestartAppEnv API
+func CreateRestartAppEnvRequest() (request *RestartAppEnvRequest) {
+	request = &RestartAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "RestartAppEnv", "/pop/v1/wam/appEnv/restart", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateRestartAppEnvResponse creates a response to parse from RestartAppEnv response
+func CreateRestartAppEnvResponse() (response *RestartAppEnvResponse) {
+	response = &RestartAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/resume_change.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// ResumeChange invokes the webplus.ResumeChange API synchronously
+// api document: https://help.aliyun.com/api/webplus/resumechange.html
+func (client *Client) ResumeChange(request *ResumeChangeRequest) (response *ResumeChangeResponse, err error) {
+	response = CreateResumeChangeResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ResumeChangeWithChan invokes the webplus.ResumeChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/resumechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ResumeChangeWithChan(request *ResumeChangeRequest) (<-chan *ResumeChangeResponse, <-chan error) {
+	responseChan := make(chan *ResumeChangeResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ResumeChange(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ResumeChangeWithCallback invokes the webplus.ResumeChange API asynchronously
+// api document: https://help.aliyun.com/api/webplus/resumechange.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ResumeChangeWithCallback(request *ResumeChangeRequest, callback func(response *ResumeChangeResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ResumeChangeResponse
+		var err error
+		defer close(result)
+		response, err = client.ResumeChange(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ResumeChangeRequest is the request struct for api ResumeChange
+type ResumeChangeRequest struct {
+	*requests.RoaRequest
+	ChangeId string `position:"Body" name:"ChangeId"`
+}
+
+// ResumeChangeResponse is the response struct for api ResumeChange
+type ResumeChangeResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateResumeChangeRequest creates a request to invoke ResumeChange API
+func CreateResumeChangeRequest() (request *ResumeChangeRequest) {
+	request = &ResumeChangeRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "ResumeChange", "/pop/v1/wam/change/resume", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateResumeChangeResponse creates a response to parse from ResumeChange response
+func CreateResumeChangeResponse() (response *ResumeChangeResponse) {
+	response = &ResumeChangeResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/start_app_env.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// StartAppEnv invokes the webplus.StartAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/startappenv.html
+func (client *Client) StartAppEnv(request *StartAppEnvRequest) (response *StartAppEnvResponse, err error) {
+	response = CreateStartAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StartAppEnvWithChan invokes the webplus.StartAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/startappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartAppEnvWithChan(request *StartAppEnvRequest) (<-chan *StartAppEnvResponse, <-chan error) {
+	responseChan := make(chan *StartAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StartAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StartAppEnvWithCallback invokes the webplus.StartAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/startappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StartAppEnvWithCallback(request *StartAppEnvRequest, callback func(response *StartAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StartAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.StartAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StartAppEnvRequest is the request struct for api StartAppEnv
+type StartAppEnvRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Body" name:"EnvId"`
+}
+
+// StartAppEnvResponse is the response struct for api StartAppEnv
+type StartAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateStartAppEnvRequest creates a request to invoke StartAppEnv API
+func CreateStartAppEnvRequest() (request *StartAppEnvRequest) {
+	request = &StartAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "StartAppEnv", "/pop/v1/wam/appEnv/start", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateStartAppEnvResponse creates a response to parse from StartAppEnv response
+func CreateStartAppEnvResponse() (response *StartAppEnvResponse) {
+	response = &StartAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/webplus/stop_app_env.go

@@ -0,0 +1,107 @@
+package webplus
+
+//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"
+)
+
+// StopAppEnv invokes the webplus.StopAppEnv API synchronously
+// api document: https://help.aliyun.com/api/webplus/stopappenv.html
+func (client *Client) StopAppEnv(request *StopAppEnvRequest) (response *StopAppEnvResponse, err error) {
+	response = CreateStopAppEnvResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// StopAppEnvWithChan invokes the webplus.StopAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/stopappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopAppEnvWithChan(request *StopAppEnvRequest) (<-chan *StopAppEnvResponse, <-chan error) {
+	responseChan := make(chan *StopAppEnvResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.StopAppEnv(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// StopAppEnvWithCallback invokes the webplus.StopAppEnv API asynchronously
+// api document: https://help.aliyun.com/api/webplus/stopappenv.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) StopAppEnvWithCallback(request *StopAppEnvRequest, callback func(response *StopAppEnvResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *StopAppEnvResponse
+		var err error
+		defer close(result)
+		response, err = client.StopAppEnv(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// StopAppEnvRequest is the request struct for api StopAppEnv
+type StopAppEnvRequest struct {
+	*requests.RoaRequest
+	EnvId string `position:"Body" name:"EnvId"`
+}
+
+// StopAppEnvResponse is the response struct for api StopAppEnv
+type StopAppEnvResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	Code      string    `json:"Code" xml:"Code"`
+	Message   string    `json:"Message" xml:"Message"`
+	EnvChange EnvChange `json:"EnvChange" xml:"EnvChange"`
+}
+
+// CreateStopAppEnvRequest creates a request to invoke StopAppEnv API
+func CreateStopAppEnvRequest() (request *StopAppEnvRequest) {
+	request = &StopAppEnvRequest{
+		RoaRequest: &requests.RoaRequest{},
+	}
+	request.InitWithApiInfo("WebPlus", "2019-03-20", "StopAppEnv", "/pop/v1/wam/appEnv/stop", "webx", "openAPI")
+	request.Method = requests.POST
+	return
+}
+
+// CreateStopAppEnvResponse creates a response to parse from StopAppEnv response
+func CreateStopAppEnvResponse() (response *StopAppEnvResponse) {
+	response = &StopAppEnvResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 46 - 0
services/webplus/struct_app_env.go

@@ -0,0 +1,46 @@
+package webplus
+
+//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.
+
+// AppEnv is a nested struct in webplus response
+type AppEnv struct {
+	EnvId                string `json:"EnvId" xml:"EnvId"`
+	EnvName              string `json:"EnvName" xml:"EnvName"`
+	EnvDescription       string `json:"EnvDescription" xml:"EnvDescription"`
+	CreateUsername       string `json:"CreateUsername" xml:"CreateUsername"`
+	UpdateUsername       string `json:"UpdateUsername" xml:"UpdateUsername"`
+	CreateTime           int64  `json:"CreateTime" xml:"CreateTime"`
+	UpdateTime           int64  `json:"UpdateTime" xml:"UpdateTime"`
+	StackId              string `json:"StackId" xml:"StackId"`
+	StackName            string `json:"StackName" xml:"StackName"`
+	AppName              string `json:"AppName" xml:"AppName"`
+	AppId                string `json:"AppId" xml:"AppId"`
+	ApplyingChange       bool   `json:"ApplyingChange" xml:"ApplyingChange"`
+	AbortingChange       bool   `json:"AbortingChange" xml:"AbortingChange"`
+	EnvType              string `json:"EnvType" xml:"EnvType"`
+	PkgVersionId         string `json:"PkgVersionId" xml:"PkgVersionId"`
+	PkgVersionLabel      string `json:"PkgVersionLabel" xml:"PkgVersionLabel"`
+	EnvStatus            string `json:"EnvStatus" xml:"EnvStatus"`
+	LastEnvStatus        string `json:"LastEnvStatus" xml:"LastEnvStatus"`
+	StorageBase          string `json:"StorageBase" xml:"StorageBase"`
+	DataRoot             string `json:"DataRoot" xml:"DataRoot"`
+	LatestChangeId       string `json:"LatestChangeId" xml:"LatestChangeId"`
+	ChangeBanner         string `json:"ChangeBanner" xml:"ChangeBanner"`
+	CategoryName         string `json:"CategoryName" xml:"CategoryName"`
+	TotalInstances       int64  `json:"TotalInstances" xml:"TotalInstances"`
+	LogBase              string `json:"LogBase" xml:"LogBase"`
+	PkgVersionStorageKey string `json:"PkgVersionStorageKey" xml:"PkgVersionStorageKey"`
+}

+ 21 - 0
services/webplus/struct_app_envs.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// AppEnvs is a nested struct in webplus response
+type AppEnvs struct {
+	AppEnv []AppEnv `json:"AppEnv" xml:"AppEnv"`
+}

+ 31 - 0
services/webplus/struct_application.go

@@ -0,0 +1,31 @@
+package webplus
+
+//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.
+
+// Application is a nested struct in webplus response
+type Application struct {
+	AppDescription string `json:"AppDescription" xml:"AppDescription"`
+	AppId          string `json:"AppId" xml:"AppId"`
+	CategoryName   string `json:"CategoryName" xml:"CategoryName"`
+	UpdateUsername string `json:"UpdateUsername" xml:"UpdateUsername"`
+	UpdateTime     int64  `json:"UpdateTime" xml:"UpdateTime"`
+	CreateUsername string `json:"CreateUsername" xml:"CreateUsername"`
+	CreateTime     int64  `json:"CreateTime" xml:"CreateTime"`
+	AppName        string `json:"AppName" xml:"AppName"`
+	TotalEnvs      int    `json:"TotalEnvs" xml:"TotalEnvs"`
+	TerminatedEnvs int    `json:"TerminatedEnvs" xml:"TerminatedEnvs"`
+	RunningEnvs    int    `json:"RunningEnvs" xml:"RunningEnvs"`
+}

+ 21 - 0
services/webplus/struct_applications.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// Applications is a nested struct in webplus response
+type Applications struct {
+	Application []Application `json:"Application" xml:"Application"`
+}

+ 21 - 0
services/webplus/struct_categories.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// Categories is a nested struct in webplus response
+type Categories struct {
+	Category []Category `json:"Category" xml:"Category"`
+}

+ 27 - 0
services/webplus/struct_category.go

@@ -0,0 +1,27 @@
+package webplus
+
+//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.
+
+// Category is a nested struct in webplus response
+type Category struct {
+	CategoryId          string       `json:"CategoryId" xml:"CategoryId"`
+	CategoryName        string       `json:"CategoryName" xml:"CategoryName"`
+	CategoryLogo        string       `json:"CategoryLogo" xml:"CategoryLogo"`
+	CategoryDescription string       `json:"CategoryDescription" xml:"CategoryDescription"`
+	CreateTime          string       `json:"CreateTime" xml:"CreateTime"`
+	UpdateTime          string       `json:"UpdateTime" xml:"UpdateTime"`
+	DemoProjects        DemoProjects `json:"DemoProjects" xml:"DemoProjects"`
+}

+ 36 - 0
services/webplus/struct_change.go

@@ -0,0 +1,36 @@
+package webplus
+
+//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.
+
+// Change is a nested struct in webplus response
+type Change struct {
+	ChangeMessage     string `json:"ChangeMessage" xml:"ChangeMessage"`
+	FinishTime        int64  `json:"FinishTime" xml:"FinishTime"`
+	UpdateTime        int64  `json:"UpdateTime" xml:"UpdateTime"`
+	CreateUsername    string `json:"CreateUsername" xml:"CreateUsername"`
+	ChangeSucceed     bool   `json:"ChangeSucceed" xml:"ChangeSucceed"`
+	ChangePaused      bool   `json:"ChangePaused" xml:"ChangePaused"`
+	CreateTime        int64  `json:"CreateTime" xml:"CreateTime"`
+	ActionName        string `json:"ActionName" xml:"ActionName"`
+	ChangeAborted     bool   `json:"ChangeAborted" xml:"ChangeAborted"`
+	ChangeDescription string `json:"ChangeDescription" xml:"ChangeDescription"`
+	ChangeTimedout    bool   `json:"ChangeTimedout" xml:"ChangeTimedout"`
+	ChangeFinished    bool   `json:"ChangeFinished" xml:"ChangeFinished"`
+	ChangeName        string `json:"ChangeName" xml:"ChangeName"`
+	ChangeId          string `json:"ChangeId" xml:"ChangeId"`
+	EnvId             string `json:"EnvId" xml:"EnvId"`
+	ChangeSucceeded   bool   `json:"ChangeSucceeded" xml:"ChangeSucceeded"`
+}

+ 21 - 0
services/webplus/struct_changes.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// Changes is a nested struct in webplus response
+type Changes struct {
+	Change []Change `json:"Change" xml:"Change"`
+}

+ 23 - 0
services/webplus/struct_config_group.go

@@ -0,0 +1,23 @@
+package webplus
+
+//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.
+
+// ConfigGroup is a nested struct in webplus response
+type ConfigGroup struct {
+	GroupName   string      `json:"GroupName" xml:"GroupName"`
+	GroupLabel  string      `json:"GroupLabel" xml:"GroupLabel"`
+	ConfigPaths ConfigPaths `json:"ConfigPaths" xml:"ConfigPaths"`
+}

+ 21 - 0
services/webplus/struct_config_groups.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigGroups is a nested struct in webplus response
+type ConfigGroups struct {
+	ConfigGroup []ConfigGroup `json:"ConfigGroup" xml:"ConfigGroup"`
+}

+ 37 - 0
services/webplus/struct_config_option.go

@@ -0,0 +1,37 @@
+package webplus
+
+//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.
+
+// ConfigOption is a nested struct in webplus response
+type ConfigOption struct {
+	MaxValue          int64  `json:"MaxValue" xml:"MaxValue"`
+	MaxLength         int    `json:"MaxLength" xml:"MaxLength"`
+	RegexPattern      string `json:"RegexPattern" xml:"RegexPattern"`
+	ValueType         string `json:"ValueType" xml:"ValueType"`
+	DefaultValue      string `json:"DefaultValue" xml:"DefaultValue"`
+	RegexDesc         string `json:"RegexDesc" xml:"RegexDesc"`
+	ValueOptions      string `json:"ValueOptions" xml:"ValueOptions"`
+	MinLength         int    `json:"MinLength" xml:"MinLength"`
+	HiddenOption      bool   `json:"HiddenOption" xml:"HiddenOption"`
+	ReadonlyOption    bool   `json:"ReadonlyOption" xml:"ReadonlyOption"`
+	OptionLabel       string `json:"OptionLabel" xml:"OptionLabel"`
+	ChangeSeverity    string `json:"ChangeSeverity" xml:"ChangeSeverity"`
+	EditorType        string `json:"EditorType" xml:"EditorType"`
+	OptionName        string `json:"OptionName" xml:"OptionName"`
+	MinValue          int64  `json:"MinValue" xml:"MinValue"`
+	OptionDescription string `json:"OptionDescription" xml:"OptionDescription"`
+	PathName          string `json:"PathName" xml:"PathName"`
+}

+ 21 - 0
services/webplus/struct_config_options_in_describe_config_index.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigOptionsInDescribeConfigIndex is a nested struct in webplus response
+type ConfigOptionsInDescribeConfigIndex struct {
+	ConfigOption []ConfigOption `json:"ConfigOption" xml:"ConfigOption"`
+}

+ 21 - 0
services/webplus/struct_config_options_in_describe_config_options.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigOptionsInDescribeConfigOptions is a nested struct in webplus response
+type ConfigOptionsInDescribeConfigOptions struct {
+	ConfigOption []ConfigOption `json:"ConfigOption" xml:"ConfigOption"`
+}

+ 24 - 0
services/webplus/struct_config_path.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// ConfigPath is a nested struct in webplus response
+type ConfigPath struct {
+	PathName      string                             `json:"PathName" xml:"PathName"`
+	PathLabel     string                             `json:"PathLabel" xml:"PathLabel"`
+	HiddenPath    bool                               `json:"HiddenPath" xml:"HiddenPath"`
+	ConfigOptions ConfigOptionsInDescribeConfigIndex `json:"ConfigOptions" xml:"ConfigOptions"`
+}

+ 21 - 0
services/webplus/struct_config_paths.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigPaths is a nested struct in webplus response
+type ConfigPaths struct {
+	ConfigPath []ConfigPath `json:"ConfigPath" xml:"ConfigPath"`
+}

+ 23 - 0
services/webplus/struct_config_setting.go

@@ -0,0 +1,23 @@
+package webplus
+
+//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.
+
+// ConfigSetting is a nested struct in webplus response
+type ConfigSetting struct {
+	PathName     string `json:"PathName" xml:"PathName"`
+	OptionName   string `json:"OptionName" xml:"OptionName"`
+	SettingValue string `json:"SettingValue" xml:"SettingValue"`
+}

+ 21 - 0
services/webplus/struct_config_settings.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigSettings is a nested struct in webplus response
+type ConfigSettings struct {
+	ConfigSetting []ConfigSetting `json:"ConfigSetting" xml:"ConfigSetting"`
+}

+ 32 - 0
services/webplus/struct_config_template.go

@@ -0,0 +1,32 @@
+package webplus
+
+//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.
+
+// ConfigTemplate is a nested struct in webplus response
+type ConfigTemplate struct {
+	TemplateId          string `json:"TemplateId" xml:"TemplateId"`
+	PkgVersionLabel     string `json:"PkgVersionLabel" xml:"PkgVersionLabel"`
+	AppId               string `json:"AppId" xml:"AppId"`
+	TemplateName        string `json:"TemplateName" xml:"TemplateName"`
+	PkgVersionId        string `json:"PkgVersionId" xml:"PkgVersionId"`
+	UpdateTime          int64  `json:"UpdateTime" xml:"UpdateTime"`
+	CreateTime          int64  `json:"CreateTime" xml:"CreateTime"`
+	AppName             string `json:"AppName" xml:"AppName"`
+	TemplateType        string `json:"TemplateType" xml:"TemplateType"`
+	TemplateDescription string `json:"TemplateDescription" xml:"TemplateDescription"`
+	StackId             string `json:"StackId" xml:"StackId"`
+	StackName           string `json:"StackName" xml:"StackName"`
+}

+ 21 - 0
services/webplus/struct_config_templates.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigTemplates is a nested struct in webplus response
+type ConfigTemplates struct {
+	ConfigTemplate []ConfigTemplate `json:"ConfigTemplate" xml:"ConfigTemplate"`
+}

+ 25 - 0
services/webplus/struct_config_validation_result.go

@@ -0,0 +1,25 @@
+package webplus
+
+//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.
+
+// ConfigValidationResult is a nested struct in webplus response
+type ConfigValidationResult struct {
+	PathName       string       `json:"PathName" xml:"PathName"`
+	OptionName     string       `json:"OptionName" xml:"OptionName"`
+	ResultSeverity string       `json:"ResultSeverity" xml:"ResultSeverity"`
+	ResultMessage  string       `json:"ResultMessage" xml:"ResultMessage"`
+	ConfigOption   ConfigOption `json:"ConfigOption" xml:"ConfigOption"`
+}

+ 21 - 0
services/webplus/struct_config_validation_results.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ConfigValidationResults is a nested struct in webplus response
+type ConfigValidationResults struct {
+	ConfigValidationResult []ConfigValidationResult `json:"ConfigValidationResult" xml:"ConfigValidationResult"`
+}

+ 23 - 0
services/webplus/struct_demo_project.go

@@ -0,0 +1,23 @@
+package webplus
+
+//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.
+
+// DemoProject is a nested struct in webplus response
+type DemoProject struct {
+	RegionId   string `json:"RegionId" xml:"RegionId"`
+	PackageUrl string `json:"PackageUrl" xml:"PackageUrl"`
+	SourceUrl  string `json:"SourceUrl" xml:"SourceUrl"`
+}

+ 21 - 0
services/webplus/struct_demo_projects.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// DemoProjects is a nested struct in webplus response
+type DemoProjects struct {
+	DemoProject []DemoProject `json:"DemoProject" xml:"DemoProject"`
+}

+ 21 - 0
services/webplus/struct_dry_run_info.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// DryRunInfo is a nested struct in webplus response
+type DryRunInfo struct {
+	Operations OperationsInDryRunRebuildAppEnv `json:"Operations" xml:"Operations"`
+}

+ 23 - 0
services/webplus/struct_env_change.go

@@ -0,0 +1,23 @@
+package webplus
+
+//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.
+
+// EnvChange is a nested struct in webplus response
+type EnvChange struct {
+	StartTime string `json:"StartTime" xml:"StartTime"`
+	EnvId     string `json:"EnvId" xml:"EnvId"`
+	ChangeId  string `json:"ChangeId" xml:"ChangeId"`
+}

+ 24 - 0
services/webplus/struct_env_change_detail.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// EnvChangeDetail is a nested struct in webplus response
+type EnvChangeDetail struct {
+	StartTime  string                   `json:"StartTime" xml:"StartTime"`
+	EnvId      string                   `json:"EnvId" xml:"EnvId"`
+	ChangeId   string                   `json:"ChangeId" xml:"ChangeId"`
+	Operations OperationsInCreateAppEnv `json:"Operations" xml:"Operations"`
+}

+ 23 - 0
services/webplus/struct_env_instance_health.go

@@ -0,0 +1,23 @@
+package webplus
+
+//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.
+
+// EnvInstanceHealth is a nested struct in webplus response
+type EnvInstanceHealth struct {
+	EnvId              string             `json:"EnvId" xml:"EnvId"`
+	EnvName            string             `json:"EnvName" xml:"EnvName"`
+	InstanceHealthList InstanceHealthList `json:"InstanceHealthList" xml:"InstanceHealthList"`
+}

+ 31 - 0
services/webplus/struct_env_resource.go

@@ -0,0 +1,31 @@
+package webplus
+
+//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.
+
+// EnvResource is a nested struct in webplus response
+type EnvResource struct {
+	EnvId                 string         `json:"EnvId" xml:"EnvId"`
+	EnvName               string         `json:"EnvName" xml:"EnvName"`
+	LaunchConfigurationId string         `json:"LaunchConfigurationId" xml:"LaunchConfigurationId"`
+	LaunchTemplateId      string         `json:"LaunchTemplateId" xml:"LaunchTemplateId"`
+	MonitorGroup          MonitorGroup   `json:"MonitorGroup" xml:"MonitorGroup"`
+	ScalingGroup          ScalingGroup   `json:"ScalingGroup" xml:"ScalingGroup"`
+	Vpc                   Vpc            `json:"Vpc" xml:"Vpc"`
+	Instances             Instances      `json:"Instances" xml:"Instances"`
+	VSwitches             VSwitches      `json:"VSwitches" xml:"VSwitches"`
+	LoadBalancers         LoadBalancers  `json:"LoadBalancers" xml:"LoadBalancers"`
+	SecurityGroups        SecurityGroups `json:"SecurityGroups" xml:"SecurityGroups"`
+}

+ 30 - 0
services/webplus/struct_env_status.go

@@ -0,0 +1,30 @@
+package webplus
+
+//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.
+
+// EnvStatus is a nested struct in webplus response
+type EnvStatus struct {
+	EnvId               string              `json:"EnvId" xml:"EnvId"`
+	EnvName             string              `json:"EnvName" xml:"EnvName"`
+	EnvStatus           string              `json:"EnvStatus" xml:"EnvStatus"`
+	LastEnvStatus       string              `json:"LastEnvStatus" xml:"LastEnvStatus"`
+	ApplyingChange      bool                `json:"ApplyingChange" xml:"ApplyingChange"`
+	AbortingChange      bool                `json:"AbortingChange" xml:"AbortingChange"`
+	LatestChangeId      string              `json:"LatestChangeId" xml:"LatestChangeId"`
+	ChangeBanner        string              `json:"ChangeBanner" xml:"ChangeBanner"`
+	InstanceAppStatus   InstanceAppStatus   `json:"InstanceAppStatus" xml:"InstanceAppStatus"`
+	InstanceAgentStatus InstanceAgentStatus `json:"InstanceAgentStatus" xml:"InstanceAgentStatus"`
+}

+ 38 - 0
services/webplus/struct_event.go

@@ -0,0 +1,38 @@
+package webplus
+
+//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.
+
+// Event is a nested struct in webplus response
+type Event struct {
+	EventId         string      `json:"EventId" xml:"EventId"`
+	EventTimestamp  int64       `json:"EventTimestamp" xml:"EventTimestamp"`
+	EventMessage    string      `json:"EventMessage" xml:"EventMessage"`
+	EnvId           string      `json:"EnvId" xml:"EnvId"`
+	AppId           string      `json:"AppId" xml:"AppId"`
+	EventLevel      string      `json:"EventLevel" xml:"EventLevel"`
+	TraceId         string      `json:"TraceId" xml:"TraceId"`
+	EnventName      string      `json:"EnventName" xml:"EnventName"`
+	MsgCode         string      `json:"MsgCode" xml:"MsgCode"`
+	PrimaryUserId   string      `json:"PrimaryUserId" xml:"PrimaryUserId"`
+	PrimaryUserName string      `json:"PrimaryUserName" xml:"PrimaryUserName"`
+	SecondUserId    string      `json:"SecondUserId" xml:"SecondUserId"`
+	SecondUserName  string      `json:"SecondUserName" xml:"SecondUserName"`
+	ObjectId        string      `json:"ObjectId" xml:"ObjectId"`
+	ObjectName      string      `json:"ObjectName" xml:"ObjectName"`
+	ObjectType      string      `json:"ObjectType" xml:"ObjectType"`
+	MsgParams       MsgParams   `json:"MsgParams" xml:"MsgParams"`
+	ObjectAttrs     ObjectAttrs `json:"ObjectAttrs" xml:"ObjectAttrs"`
+}

+ 21 - 0
services/webplus/struct_events.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// Events is a nested struct in webplus response
+type Events struct {
+	Event []Event `json:"Event" xml:"Event"`
+}

+ 23 - 0
services/webplus/struct_gather_log_result.go

@@ -0,0 +1,23 @@
+package webplus
+
+//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.
+
+// GatherLogResult is a nested struct in webplus response
+type GatherLogResult struct {
+	LogPath         string                                   `json:"LogPath" xml:"LogPath"`
+	Change          Change                                   `json:"Change" xml:"Change"`
+	InstanceResults InstanceResultsInDescribeGatherLogResult `json:"InstanceResults" xml:"InstanceResults"`
+}

+ 22 - 0
services/webplus/struct_gather_stats_result.go

@@ -0,0 +1,22 @@
+package webplus
+
+//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.
+
+// GatherStatsResult is a nested struct in webplus response
+type GatherStatsResult struct {
+	Change          Change                                     `json:"Change" xml:"Change"`
+	InstanceResults InstanceResultsInDescribeGatherStatsResult `json:"InstanceResults" xml:"InstanceResults"`
+}

+ 21 - 0
services/webplus/struct_instance.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// Instance is a nested struct in webplus response
+type Instance struct {
+	Id string `json:"Id" xml:"Id"`
+}

+ 22 - 0
services/webplus/struct_instance_agent_status.go

@@ -0,0 +1,22 @@
+package webplus
+
+//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.
+
+// InstanceAgentStatus is a nested struct in webplus response
+type InstanceAgentStatus struct {
+	ConnectedInstances    int `json:"ConnectedInstances" xml:"ConnectedInstances"`
+	DisconnectedInstances int `json:"DisconnectedInstances" xml:"DisconnectedInstances"`
+}

+ 24 - 0
services/webplus/struct_instance_app_status.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// InstanceAppStatus is a nested struct in webplus response
+type InstanceAppStatus struct {
+	HealthyInstances   int `json:"HealthyInstances" xml:"HealthyInstances"`
+	UnhealthyInstances int `json:"UnhealthyInstances" xml:"UnhealthyInstances"`
+	UnknownInstances   int `json:"UnknownInstances" xml:"UnknownInstances"`
+	StoppedInstances   int `json:"StoppedInstances" xml:"StoppedInstances"`
+}

+ 24 - 0
services/webplus/struct_instance_health.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// InstanceHealth is a nested struct in webplus response
+type InstanceHealth struct {
+	AppStatus        string `json:"AppStatus" xml:"AppStatus"`
+	InstanceId       string `json:"InstanceId" xml:"InstanceId"`
+	DisconnectedTime string `json:"DisconnectedTime" xml:"DisconnectedTime"`
+	AgentStatus      string `json:"AgentStatus" xml:"AgentStatus"`
+}

+ 24 - 0
services/webplus/struct_instance_health_in_describe_instance_health.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// InstanceHealthInDescribeInstanceHealth is a nested struct in webplus response
+type InstanceHealthInDescribeInstanceHealth struct {
+	InstanceId       string `json:"InstanceId" xml:"InstanceId"`
+	AgentStatus      string `json:"AgentStatus" xml:"AgentStatus"`
+	AppStatus        string `json:"AppStatus" xml:"AppStatus"`
+	DisconnectedTime int64  `json:"DisconnectedTime" xml:"DisconnectedTime"`
+}

+ 21 - 0
services/webplus/struct_instance_health_list.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// InstanceHealthList is a nested struct in webplus response
+type InstanceHealthList struct {
+	InstanceHealth []InstanceHealth `json:"InstanceHealth" xml:"InstanceHealth"`
+}

+ 24 - 0
services/webplus/struct_instance_result.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// InstanceResult is a nested struct in webplus response
+type InstanceResult struct {
+	TaskMessage   string `json:"TaskMessage" xml:"TaskMessage"`
+	TaskSucceeded bool   `json:"TaskSucceeded" xml:"TaskSucceeded"`
+	InstanceId    string `json:"InstanceId" xml:"InstanceId"`
+	StorageKey    string `json:"StorageKey" xml:"StorageKey"`
+}

+ 21 - 0
services/webplus/struct_instance_results_in_describe_gather_log_result.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// InstanceResultsInDescribeGatherLogResult is a nested struct in webplus response
+type InstanceResultsInDescribeGatherLogResult struct {
+	InstanceResult []InstanceResult `json:"InstanceResult" xml:"InstanceResult"`
+}

+ 21 - 0
services/webplus/struct_instance_results_in_describe_gather_stats_result.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// InstanceResultsInDescribeGatherStatsResult is a nested struct in webplus response
+type InstanceResultsInDescribeGatherStatsResult struct {
+	InstanceResult []InstanceResult `json:"InstanceResult" xml:"InstanceResult"`
+}

+ 21 - 0
services/webplus/struct_instances.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// Instances is a nested struct in webplus response
+type Instances struct {
+	Instance []Instance `json:"Instance" xml:"Instance"`
+}

+ 24 - 0
services/webplus/struct_load_balancer.go

@@ -0,0 +1,24 @@
+package webplus
+
+//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.
+
+// LoadBalancer is a nested struct in webplus response
+type LoadBalancer struct {
+	Id          string `json:"Id" xml:"Id"`
+	AddressType string `json:"AddressType" xml:"AddressType"`
+	Port        int    `json:"Port" xml:"Port"`
+	Protocol    string `json:"Protocol" xml:"Protocol"`
+}

+ 21 - 0
services/webplus/struct_load_balancers.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// LoadBalancers is a nested struct in webplus response
+type LoadBalancers struct {
+	LoadBalancer []LoadBalancer `json:"LoadBalancer" xml:"LoadBalancer"`
+}

+ 21 - 0
services/webplus/struct_monitor_group.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// MonitorGroup is a nested struct in webplus response
+type MonitorGroup struct {
+	Id string `json:"Id" xml:"Id"`
+}

+ 21 - 0
services/webplus/struct_msg_params.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// MsgParams is a nested struct in webplus response
+type MsgParams struct {
+	MsgParam []string `json:"MsgParam" xml:"MsgParam"`
+}

+ 22 - 0
services/webplus/struct_object_attr.go

@@ -0,0 +1,22 @@
+package webplus
+
+//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.
+
+// ObjectAttr is a nested struct in webplus response
+type ObjectAttr struct {
+	AttributeName  string `json:"AttributeName" xml:"AttributeName"`
+	AttributeValue string `json:"AttributeValue" xml:"AttributeValue"`
+}

+ 21 - 0
services/webplus/struct_object_attrs.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// ObjectAttrs is a nested struct in webplus response
+type ObjectAttrs struct {
+	ObjectAttr []ObjectAttr `json:"ObjectAttr" xml:"ObjectAttr"`
+}

+ 22 - 0
services/webplus/struct_operation.go

@@ -0,0 +1,22 @@
+package webplus
+
+//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.
+
+// Operation is a nested struct in webplus response
+type Operation struct {
+	OperationDescription string `json:"OperationDescription" xml:"OperationDescription"`
+	OperationType        string `json:"OperationType" xml:"OperationType"`
+}

+ 21 - 0
services/webplus/struct_operations_in_create_app_env.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// OperationsInCreateAppEnv is a nested struct in webplus response
+type OperationsInCreateAppEnv struct {
+	Operation []Operation `json:"Operation" xml:"Operation"`
+}

+ 21 - 0
services/webplus/struct_operations_in_dry_run_create_app_env.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// OperationsInDryRunCreateAppEnv is a nested struct in webplus response
+type OperationsInDryRunCreateAppEnv struct {
+	Operation []Operation `json:"Operation" xml:"Operation"`
+}

+ 21 - 0
services/webplus/struct_operations_in_dry_run_rebuild_app_env.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// OperationsInDryRunRebuildAppEnv is a nested struct in webplus response
+type OperationsInDryRunRebuildAppEnv struct {
+	Operation []Operation `json:"Operation" xml:"Operation"`
+}

+ 21 - 0
services/webplus/struct_operations_in_dry_run_terminate_app_env.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// OperationsInDryRunTerminateAppEnv is a nested struct in webplus response
+type OperationsInDryRunTerminateAppEnv struct {
+	Operation []Operation `json:"Operation" xml:"Operation"`
+}

+ 21 - 0
services/webplus/struct_operations_in_rebuild_app_env.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// OperationsInRebuildAppEnv is a nested struct in webplus response
+type OperationsInRebuildAppEnv struct {
+	Operation []Operation `json:"Operation" xml:"Operation"`
+}

+ 21 - 0
services/webplus/struct_operations_in_terminate_app_env.go

@@ -0,0 +1,21 @@
+package webplus
+
+//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.
+
+// OperationsInTerminateAppEnv is a nested struct in webplus response
+type OperationsInTerminateAppEnv struct {
+	Operation []Operation `json:"Operation" xml:"Operation"`
+}

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä